diff --git a/.github/workflows/js_tests.yml b/.github/workflows/js_tests.yml new file mode 100644 index 00000000..c427ca55 --- /dev/null +++ b/.github/workflows/js_tests.yml @@ -0,0 +1,22 @@ +name: Javascript tests + +on: + workflow_dispatch: + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js 16 + uses: actions/setup-node@v3 + with: + node-version: 16 + - run: cd js && yarn install && yarn build && yarn test + diff --git a/.github/workflows/misspellings_checks.yml b/.github/workflows/misspellings_checks.yml index c5efd1ef..6612d6fd 100644 --- a/.github/workflows/misspellings_checks.yml +++ b/.github/workflows/misspellings_checks.yml @@ -26,4 +26,4 @@ jobs: with: builtin: clear,rare check_filenames: true - skip: ./deps/jsmn/test/tests.c + skip: ./deps/jsmn/test/tests.c, ./transaction_metadata/manifest.mainnet.json, ./transaction_metadata/manifest.testnet.json, diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 97bacfb3..3a63ea07 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -67,5 +67,5 @@ jobs: files: ./unit-tests/coverage.info flags: unittests name: codecov-app-flow - fail_ci_if_error: true + fail_ci_if_error: false verbose: true diff --git a/Makefile b/Makefile index 265a9857..35ecc6c7 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ include $(BOLOS_SDK)/Makefile.defines APPNAME = "Flow" APPVERSION_M=0 -APPVERSION_N=12 +APPVERSION_N=13 APPVERSION_P=0 APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" @@ -122,7 +122,15 @@ DEFINES += HAVE_BOLOS_APP_STACK_CANARY DEFINES += LEDGER_SPECIFIC ifeq ($(TARGET_NAME),TARGET_NANOS) -APP_STACK_SIZE:=2480 +APP_STACK_MIN_SIZE:=2480 +endif + +######################################## +# Unit tests and misc # +######################################## + +ifeq ($(DEBUG),1) +DEFINES += ZEMU_LOGGING endif ######################### diff --git a/README.md b/README.md index 38ea8205..27c6a1c0 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,85 @@ Please: _Once the app is approved by Ledger, it will be available in their app store (Ledger Live). The builds generated by this repository are for development purposes. THESE ARE UNVETTED DEVELOPMENT RELEASES._ -## Quick start guide +## Quick start guide + +#### Docker + +Install and run [Docker](https://www.docker.com/products/docker-desktop/). + +#### Compilation + +We develop on Ubuntu. On different system slight adjustment of the commands may be necessary (see documentation below). + +He recommended way to compile the app is: +1. Pull the latest docker container. +```shell +sudo docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest +``` +2. Start terminal within the container. +```shell +sudo docker run --rm -ti --user "$(id -u):$(id -g)" --privileged -v "/dev/bus/usb:/dev/bus/usb" -v "$(realpath .):/app" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest +``` +3. Compile the app +```shell +make clean +make +make BOLOS_SDK=$NANOX_SDK +make BOLOS_SDK=$NANOSP_SDK +make BOLOS_SDK=$STAX_SDK +``` + +Stax app can be compiled in DEBUG mode for debugging purposes +```shell +make BOLOS_SDK=$STAX_SDK DEBUG=1 +``` +Note, that it is possible (although unlikely) for ledger to make a braking change in ledger-app-dev-tools:latest. + +#### Tests + +##### Speculos integration tests + +These are the main test. These end to end test cover all app features. +To run them you should compile the app in ledger-app-dev-tools:latest container. And then (in container) run + +```shell +pytest tests/ --tb=short -v --device nanos +pytest tests/ --tb=short -v --device nanox +pytest tests/ --tb=short -v --device nanosp +pytest tests/ --tb=short -v --device stax +``` + +Note that in case ledger-app-dev-tools:latest is updated there is a chance that slight changes in gui happen. In that case it is necessary to re-generate the snapshots, e.g. +```shell +pytest tests/ --tb=short -v --device nanos –golden_run +``` +and review the changes in test/snapshots directory + +##### Unit tests + +As we want to test as close as possible to the production environment, the focus is on end to end integration test. However, certain complex parts of code, where test coverage with integration tests may be insufficient, are also tested using unit tests. + +```shell +cd unit-tests/ +cmake -Bbuild -H. && make -C build +CTEST_OUTPUT_ON_FAILURE=1 make -C build test +``` + +#### Scan build + +We use scan build in ledger-app-dev-tools container (see Compilation section). + +```shell +make clean +make scan-build +make scan-build BOLOS_SDK=$NANOX_SDK +make scan-build BOLOS_SDK=$NANOSP_SDK +make scan-build BOLOS_SDK=$STAX_SDK +``` + +## Further information + +_Warning_: This is standard documentation for ledger app provided by ledger developers. As we do not use all the options, we do no guarantee that everything is up to date. ### General configuration @@ -55,7 +133,7 @@ It will allow you, whether you are developing on macOS, Windows or Linux to quic ### With a terminal -#### Using the `ledger-app-dev-tools` docker container +#### Using the `ledger-app-dev-tools` docker container (recommended) The [ledger-app-dev-tools](https://github.com/LedgerHQ/ledger-app-builder/pkgs/container/ledger-app-builder%2Fledger-app-dev-tools) docker image contains all the required tools and libraries to **build**, **test** and **load** an application. @@ -67,7 +145,7 @@ sudo docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest You can then enter this development environment by executing the following command from the directory of the application `git` repository: -##### Linux (Ubuntu) +##### Linux (Ubuntu) (recommended) ```shell sudo docker run --rm -ti --user "$(id -u):$(id -g)" --privileged -v "/dev/bus/usb:/dev/bus/usb" -v "$(realpath .):/app" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest @@ -116,7 +194,7 @@ Setup a compilation environment by following the [shell with docker approach](#w From inside the container, use the following command to build the app : ```shell -make DEBUG=1 # compile optionally with PRINTF +make ``` You can choose which device to compile and load for by setting the `BOLOS_SDK` environment variable to the following values : @@ -126,6 +204,11 @@ You can choose which device to compile and load for by setting the `BOLOS_SDK` e - `BOLOS_SDK=$NANOSP_SDK` - `BOLOS_SDK=$STAX_SDK` +For Stax device you can compile +```shell +make BOLOS_SDK=$STAX_SDK DEBUG=1 # compile optionally with PRINTF +``` + ### Loading on a physical device This step will vary slightly depending on your platform. @@ -175,7 +258,7 @@ python3 -m ledgerblue.runScript --scp --fileName bin/app.apdu --elfFile bin/app. The flow app comes with functional tests implemented with Ledger's [Ragger](https://github.com/LedgerHQ/ragger) test framework. -### Linux (Ubuntu) +### Linux (Ubuntu) (recommended) On Linux, you can use [Ledger's VS Code extension](#with-vscode) to run the tests. If you prefer not to, open a terminal and follow the steps below. diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib deleted file mode 160000 index ca77800f..00000000 --- a/deps/ledger-zxlib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ca77800fd77065df82283e01955c2fa4c1c067ae diff --git a/deps/ledger-zxlib/.editorconfig b/deps/ledger-zxlib/.editorconfig new file mode 100644 index 00000000..2d7db14f --- /dev/null +++ b/deps/ledger-zxlib/.editorconfig @@ -0,0 +1,16 @@ +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true +end_of_line = lf +insert_final_newline = true + +[*.{c,h,cpp,hpp}] +indent_style = space +indent_size = 4 + +[*.{yml,sh}] +indent_style = space +indent_size = 2 diff --git a/deps/ledger-zxlib/.github/workflows/main.yml b/deps/ledger-zxlib/.github/workflows/main.yml new file mode 100644 index 00000000..87936229 --- /dev/null +++ b/deps/ledger-zxlib/.github/workflows/main.yml @@ -0,0 +1,59 @@ +name: "Main workflow" +on: push + +jobs: + configure: + runs-on: ubuntu-latest + outputs: + uid_gid: ${{ steps.get-user.outputs.uid_gid }} + steps: + - id: get-user + run: echo "uid_gid=$(id -u):$(id -g)" >> $GITHUB_OUTPUT + + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + - run: cmake -DCMAKE_BUILD_TYPE=Debug . && make + + check_version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.get-version.outputs.version }} + exists: ${{ steps.get-version.outputs.exists }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: true + - id: get-version + name: Get zxlib version + run: echo "version=$(./scripts/get_version.sh)" >> $GITHUB_OUTPUT + - id: tag-exists + name: Check if version exists + run: | + if git rev-parse ${{ steps.get-version.outputs.version }} >/dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "exists=false" >> $GITHUB_OUTPUT + fi + - name: Fail if tag exists + if: ${{ steps.tag-exists.outputs.exists == 'true' }} + run: exit 1 + + tag: + runs-on: ubuntu-latest + needs: + - build + - check_version + if: ${{ needs.check_version.outputs.exists != 'true' && github.ref == 'refs/heads/main' }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ needs.check_version.outputs.version }} diff --git a/deps/ledger-zxlib/.gitignore b/deps/ledger-zxlib/.gitignore new file mode 100644 index 00000000..391b1ffd --- /dev/null +++ b/deps/ledger-zxlib/.gitignore @@ -0,0 +1,4 @@ + +\.idea/ +\.vscode/ +cmake-build-debug/ diff --git a/deps/ledger-zxlib/CMakeLists.txt b/deps/ledger-zxlib/CMakeLists.txt new file mode 100644 index 00000000..a8937e7c --- /dev/null +++ b/deps/ledger-zxlib/CMakeLists.txt @@ -0,0 +1,57 @@ +#******************************************************************************* +#* (c) 2018 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** +cmake_minimum_required(VERSION 3.0) +project(ledger-zxlib) + +set(CMAKE_CXX_STANDARD 11) + +add_subdirectory(cmake/gtest) + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +############### + +file(GLOB_RECURSE ZXLIB_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c + ) + +file(GLOB_RECURSE TESTS_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp + ) + +############### +set(BUILD_TESTS OFF CACHE BOOL "Enables tests") + +add_library(zxlib STATIC ${ZXLIB_SRC}) +target_include_directories(zxlib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) + +enable_testing() + +add_executable(zxlib_tests + ${TESTS_SRC} + ) + +target_include_directories(zxlib_tests PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${gtest_SOURCE_DIR}/include + ${gmock_SOURCE_DIR}/include + ) + +target_link_libraries(zxlib_tests gtest_main zxlib) + +add_test(ZXLIB_TESTS zxlib_tests) diff --git a/deps/ledger-zxlib/LICENSE b/deps/ledger-zxlib/LICENSE new file mode 100644 index 00000000..0fa613e8 --- /dev/null +++ b/deps/ledger-zxlib/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Zondax GmbH + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/deps/ledger-zxlib/README.md b/deps/ledger-zxlib/README.md new file mode 100644 index 00000000..d75ac579 --- /dev/null +++ b/deps/ledger-zxlib/README.md @@ -0,0 +1,5 @@ +# ledger-zxlib + +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![GithubActions](https://github.com/zondax/ledger-zxlib/actions/workflows/main.yml/badge.svg)](https://github.com/Zondax/ledger-zxlib/blob/main/.github/workflows/main.yaml) +[![CodeFactor](https://www.codefactor.io/repository/github/zondax/ledger-zxlib/badge)](https://www.codefactor.io/repository/github/zondax/ledger-zxlib) diff --git a/deps/ledger-zxlib/app/common/app_main.c b/deps/ledger-zxlib/app/common/app_main.c new file mode 100644 index 00000000..1977b09b --- /dev/null +++ b/deps/ledger-zxlib/app/common/app_main.c @@ -0,0 +1,222 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_main.h" + +#include +#include +#include +#include + +#include "view.h" +#include "actions.h" +#include "tx.h" +#include "coin.h" +#include "zxmacros.h" +#include "app_mode.h" +#ifdef HAVE_SWAP +#include "swap.h" +#endif // HAVE_SWAP + +unsigned char G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; + +unsigned char io_event(__Z_UNUSED unsigned char channel) { + switch (G_io_seproxyhal_spi_buffer[0]) { + + case SEPROXYHAL_TAG_BUTTON_PUSH_EVENT: // for Nano +#ifdef HAVE_BAGL + UX_BUTTON_PUSH_EVENT(G_io_seproxyhal_spi_buffer); +#endif + break; + + case SEPROXYHAL_TAG_STATUS_EVENT: + if (G_io_apdu_media == IO_APDU_MEDIA_USB_HID && // + !(U4BE(G_io_seproxyhal_spi_buffer, 3) & // + SEPROXYHAL_TAG_STATUS_EVENT_FLAG_USB_POWERED)) { + THROW(EXCEPTION_IO_RESET); + } + + __attribute__((fallthrough)); + case SEPROXYHAL_TAG_DISPLAY_PROCESSED_EVENT: +#ifdef HAVE_BAGL + UX_DISPLAYED_EVENT({}); +#elif HAVE_NBGL + UX_DEFAULT_EVENT(); +#endif + break; + +#ifdef HAVE_NBGL + case SEPROXYHAL_TAG_FINGER_EVENT: + UX_FINGER_EVENT(G_io_seproxyhal_spi_buffer); + break; +#endif + + case SEPROXYHAL_TAG_TICKER_EVENT: + UX_TICKER_EVENT(G_io_seproxyhal_spi_buffer, {}); + break; + + // unknown events are acknowledged + default: + UX_DEFAULT_EVENT(); + break; + } + if (!io_seproxyhal_spi_is_status_sent()) { + io_seproxyhal_general_status(); + } + return 1; // DO NOT reset the current APDU transport +} + +unsigned short io_exchange_al(unsigned char channel, unsigned short tx_len) { + switch (channel & ~(IO_FLAGS)) { + case CHANNEL_KEYBOARD: + break; + + // multiplexed io exchange over a SPI channel and TLV encapsulated protocol + case CHANNEL_SPI: + if (tx_len) { + io_seproxyhal_spi_send(G_io_apdu_buffer, tx_len); + + if (channel & IO_RESET_AFTER_REPLIED) { + reset(); + } + return 0; // nothing received from the master so far (it's a tx + // transaction) + } else { + return io_seproxyhal_spi_recv(G_io_apdu_buffer, sizeof(G_io_apdu_buffer), 0); + } + + default: + THROW(INVALID_PARAMETER); + } + return 0; +} + +void handle_generic_apdu(__Z_UNUSED volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + if (rx > 4 && MEMCMP(G_io_apdu_buffer, "\xE0\x01\x00\x00", 4) == 0) { + // Respond to get device info command + uint8_t *p = G_io_apdu_buffer; + // Target ID 4 bytes + p[0] = (TARGET_ID >> 24) & 0xFF; + p[1] = (TARGET_ID >> 16) & 0xFF; + p[2] = (TARGET_ID >> 8) & 0xFF; + p[3] = (TARGET_ID >> 0) & 0xFF; + p += 4; + // SE Version [length][non-terminated string] + *p = os_version(p + 1, 64); + p = p + 1 + *p; + // Flags [length][flags] + *p = 0; + p++; + // MCU Version [length][non-terminated string] + *p = os_seph_version(p + 1, 64); + p = p + 1 + *p; + + *tx = p - G_io_apdu_buffer; + THROW(APDU_CODE_OK); + } +} + +void app_init() { + io_seproxyhal_init(); + +#ifdef HAVE_BLE + // grab the current plane mode setting + G_io_app.plane_mode = os_setting_get(OS_SETTING_PLANEMODE, NULL, 0); +#endif // HAVE_BLE + + USB_power(0); + USB_power(1); + + app_mode_reset(); +#ifndef POSTPONE_MAIN_SCREEN_INIT +#ifdef HAVE_SWAP + if (!G_swap_state.called_from_swap) { + view_idle_show(0, NULL); + } +#else + #ifdef SUPPORT_SR25519 + zeroize_sr25519_signdata(); + #endif + view_idle_show(0, NULL); +#endif // HAVE_SWAP +#endif // POSTPONE_MAIN_SCREEN_INIT + +#ifdef HAVE_BLE + // Enable Bluetooth + BLE_power(0, NULL); + BLE_power(1, NULL); +#endif // HAVE_BLE + +} + +void app_main() { + volatile uint32_t rx = 0, tx = 0, flags = 0; + + // NOTE: requested from Ledger HQ + tx_initialize(); + + for (;;) { + volatile uint16_t sw = 0; + + BEGIN_TRY; + { + TRY; + { + rx = tx; + tx = 0; + + rx = io_exchange(CHANNEL_APDU | flags, rx); + flags = 0; + CHECK_APP_CANARY() + + if (rx == 0) + THROW(APDU_CODE_EMPTY_BUFFER); + + handle_generic_apdu(&flags, &tx, rx); + CHECK_APP_CANARY() + + handleApdu(&flags, &tx, rx); + CHECK_APP_CANARY() + } + CATCH(EXCEPTION_IO_RESET) + { + // reset IO and UX before continuing + app_init(); + continue; + } + CATCH_OTHER(e); + { + switch (e & 0xF000) { + case 0x6000: + case 0x9000: + sw = e; + break; + default: + sw = 0x6800 | (e & 0x7FF); + break; + } + G_io_apdu_buffer[tx] = sw >> 8; + G_io_apdu_buffer[tx + 1] = sw; + tx += 2; + } + FINALLY; + { + } + } + END_TRY; + } +} diff --git a/deps/ledger-zxlib/app/common/app_main.h b/deps/ledger-zxlib/app/common/app_main.h new file mode 100644 index 00000000..cfb1bd77 --- /dev/null +++ b/deps/ledger-zxlib/app/common/app_main.h @@ -0,0 +1,49 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include "apdu_codes.h" + +#define OFFSET_CLA 0 +#define OFFSET_INS 1 //< Instruction offset +#define OFFSET_P1 2 //< P1 +#define OFFSET_P2 3 //< P2 +#define OFFSET_DATA_LEN 4 //< Data Length +#define OFFSET_DATA 5 //< Data offset + +#define APDU_MIN_LENGTH 5 + +#define P1_INIT 0 //< P1 +#define P1_ADD 1 //< P1 +#define P1_LAST 2 //< P1 + +#define OFFSET_PAYLOAD_TYPE OFFSET_P1 + +#define INS_GET_VERSION 0x00 +#define INS_GET_ADDR 0x01 +#define INS_SIGN 0x02 + +#if defined(APP_TESTING) +#define INS_TEST 0xFF +#endif + +void app_init(); + +void app_main(); + +void handleApdu(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx); diff --git a/deps/ledger-zxlib/app/ui/view.c b/deps/ledger-zxlib/app/ui/view.c new file mode 100644 index 00000000..0d91711f --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view.c @@ -0,0 +1,100 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax AG +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "view_internal.h" +#include "actions.h" +#include "zxmacros.h" + +view_t viewdata; +unsigned int review_type = 0; + +/////////////////////////////////// +// Paging related + +void h_paging_init() { + zemu_log_stack("h_paging_init"); + + viewdata.itemIdx = 0; + viewdata.pageIdx = 0; + viewdata.pageCount = 1; + viewdata.itemCount = 0xFF; +} + +/////////////////////////////////// +// General +void view_init(void) { + UX_INIT(); +#ifdef APP_SECRET_MODE_ENABLED + viewdata.secret_click_count = 0; +#endif +} + +void view_idle_show(uint8_t item_idx, const char *statusString) { + view_idle_show_impl(item_idx, statusString); +} + +void view_message_show(const char *title, const char *message) { + view_message_impl(title, message); +} + +void view_review_init(viewfunc_getItem_t viewfuncGetItem, + viewfunc_getNumItems_t viewfuncGetNumItems, + viewfunc_accept_t viewfuncAccept) { + viewdata.viewfuncGetItem = viewfuncGetItem; + viewdata.viewfuncGetNumItems = viewfuncGetNumItems; + viewdata.viewfuncAccept = viewfuncAccept; +} + +void view_initialize_init(viewfunc_initialize_t viewFuncInit) { + viewdata.viewfuncInitialize = viewFuncInit; +} + +void view_review_show(review_type_e reviewKind) { + // Set > 0 to reply apdu message + view_review_show_impl((unsigned int)reviewKind); +} + +void view_initialize_show(uint8_t item_idx, const char *statusString) { + view_initialize_show_impl(item_idx, statusString); +} + +void h_approve(__Z_UNUSED unsigned int _) { + zemu_log_stack("h_approve"); + + view_idle_show(0, NULL); + UX_WAIT(); + if (viewdata.viewfuncAccept != NULL) { + viewdata.viewfuncAccept(); + } +} + +void h_reject(unsigned int requireReply) { + zemu_log_stack("h_reject"); + + view_idle_show(0, NULL); + UX_WAIT(); + + if (requireReply != REVIEW_UI) { + app_reject(); + } +} + +void h_error_accept(__Z_UNUSED unsigned int _) { + view_idle_show(0, NULL); + UX_WAIT(); + app_reply_error(); +} diff --git a/deps/ledger-zxlib/app/ui/view.h b/deps/ledger-zxlib/app/ui/view.h new file mode 100644 index 00000000..172a8c13 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view.h @@ -0,0 +1,106 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax AG +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include +#include "coin.h" +#include "zxerror.h" + +#if defined(LEDGER_SPECIFIC) +#include "bolos_target.h" +#if defined(BOLOS_SDK) +#include "os.h" +#include "cx.h" +#endif +#endif + +typedef struct { + uint8_t displayIdx; + char *outKey; + uint16_t outKeyLen; + char *outVal; + uint16_t outValLen; + uint8_t pageIdx; + uint8_t *pageCount; +} ui_field_t; + +typedef struct { + uint8_t itemIdx; + uint8_t itemCount; + uint8_t pageIdx; + uint8_t pageCount; +} paging_t; + +#define MAX_DEPTH 10 +typedef struct { + uint8_t level; + uint8_t trace[MAX_DEPTH]; + paging_t paging; +} inner_state_t; + +typedef zxerr_t (*viewfunc_getNumItems_t)(uint8_t *num_items); + +typedef zxerr_t (*viewfunc_getItem_t)(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount); + +typedef zxerr_t (*viewfunc_getInnerItem_t)(uint8_t depth_level, uint8_t *trace, ui_field_t *ui_field); + +typedef bool (*viewfunc_canInspectItem_t)(uint8_t depth_level, uint8_t *trace, uint8_t innerItemIdx); + +typedef void (*viewfunc_accept_t)(); + +typedef zxerr_t (*viewfunc_initialize_t)(); + +typedef enum { + REVIEW_UI = 0, + REVIEW_ADDRESS, + REVIEW_TXN, +} review_type_e; + +#ifdef APP_SECRET_MODE_ENABLED +zxerr_t secret_enabled(); +#endif + +/// view_init (initializes UI) +void view_init(); + +/// view_initialize_show (idle view - main menu + status) +void view_initialize_init(viewfunc_initialize_t viewFuncInit); +void view_initialize_show(uint8_t item_idx, const char *statusString); + +/// view_idle_show (idle view - main menu + status) +void view_idle_show(uint8_t item_idx, const char *statusString); + +void view_message_show(const char *title, const char *message); + +/// view_error (error view) +void view_error_show(); + +void view_custom_error_show(const char *upper, const char *lower); + +void view_review_init(viewfunc_getItem_t viewfuncGetItem, + viewfunc_getNumItems_t viewfuncGetNumItems, + viewfunc_accept_t viewfuncAccept); + +void view_inspect_init(viewfunc_getInnerItem_t view_funcGetInnerItem, + viewfunc_getNumItems_t view_funcGetInnerNumItems, + viewfunc_canInspectItem_t view_funcCanInspectItem); + +void view_review_show(review_type_e reviewKind); diff --git a/deps/ledger-zxlib/app/ui/view_inspect_s.c b/deps/ledger-zxlib/app/ui/view_inspect_s.c new file mode 100644 index 00000000..d4e1e603 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_inspect_s.c @@ -0,0 +1,164 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "bolos_target.h" + +#if defined(TARGET_NANOS) +#include "view_internal.h" +#include "view_nano_inspect.h" +#include "view_templates.h" +#include "ux.h" +#include "bagl.h" +#include "zxmacros.h" + +static void h_inspect_button_left(); +static void h_inspect_button_right(); +static void h_inspect_button_both(); + +static void h_inspect(); +static void h_back(); +static void h_rootTxn(); + +const bagl_element_t *view_prepro(const bagl_element_t *element); + +static const bagl_element_t view_inspect[] = { + UI_BACKGROUND_LEFT_RIGHT_ICONS, + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 1, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), + UI_LabelLine(UIID_LABEL + 2, 0, 30, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value2), +}; + + +static unsigned int view_inspect_button(unsigned int button_mask, __Z_UNUSED unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + h_inspect_button_both(); + break; + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + // Press left to progress to the previous element + h_inspect_button_left(); + break; + + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + // Press right to progress to the next element + h_inspect_button_right(); + break; + } + return 0; +} + +void h_inspect_button_left() { + ZEMU_LOGF(50, "h_inspect_button_left\n"); + h_decrease(&viewdata.innerField.paging); + h_inspect_update_data(); + view_inspect_show_impl(); +} + +void h_inspect_button_right() { + ZEMU_LOGF(50, "h_inspect_button_right\n"); + h_increase(&viewdata.innerField.paging, 0); + h_inspect_update_data(); + view_inspect_show_impl(); +} + +void h_inspect_button_both() { + ZEMU_LOGF(50, "h_inspect_button_both\n") + paging_t page = viewdata.innerField.paging; + + if (page.itemIdx == 0) { + h_rootTxn(); + } else if (page.itemIdx == (page.itemCount - 1)) { + h_back(); + } else { + h_inspect(); + } +} + +void view_inspect_show_impl() { + ZEMU_LOGF(50, "view_inspect_show_impl\n") + UX_DISPLAY(view_inspect, view_prepro) +} + +void h_inspect() { + if (viewdata.viewfuncCanInspectItem == NULL) { + view_error_show(); + return; + } + + const uint8_t idxOffset = (viewdata.innerField.paging.itemIdx > 0) ? 1 : 0; + // Check if we can inspect this element + if (viewdata.innerField.level >= MAX_DEPTH || + !viewdata.viewfuncCanInspectItem(viewdata.innerField.level+1, + viewdata.innerField.trace, + viewdata.innerField.paging.itemIdx - idxOffset )) { + h_inspect_update_data(); + view_inspect_show_impl(); + return; + } + + // NanoS counts Go to root screen as an item, adjust offset + viewdata.innerField.level++; + viewdata.innerField.trace[viewdata.innerField.level] = viewdata.innerField.paging.itemIdx- idxOffset; viewdata.innerField.paging.itemIdx = 1; + viewdata.innerField.paging.pageCount = 1; + viewdata.innerField.paging.itemCount = 0xFF; + + h_inspect_update_data(); + view_inspect_show_impl(); +} + +void h_rootTxn() { + viewdata.innerField.level = 0; + viewdata.itemIdx = viewdata.innerField.trace[viewdata.innerField.level]; + viewdata.innerField.trace[0] = 0; + h_review_update(); +} + +void h_back() { + if (viewdata.innerField.level > 1) { + // For NanoS we need to bump the previous itemIdx because of the first screen + viewdata.innerField.paging.itemIdx = viewdata.innerField.trace[viewdata.innerField.level] + 1; + viewdata.innerField.level--; + viewdata.innerField.paging.pageCount = 1; + viewdata.innerField.paging.itemCount = 0xFF; + + h_inspect_update_data(); + view_inspect_show_impl(); + return; + } + + // Go back to root txn review + h_rootTxn(); +} + +void inspect_init() { + #ifdef HAVE_INSPECT + h_inspect_init(); + if (!viewdata.viewfuncCanInspectItem(viewdata.innerField.level, + viewdata.innerField.trace, + viewdata.innerField.paging.itemIdx)) { + h_rootTxn(); + return; + } + // Skip first screen for NanoS + viewdata.innerField.paging.itemIdx = 1; + const zxerr_t err = h_inspect_update_data(); + if (err == zxerr_no_data) { + return; + } + view_inspect_show_impl(); + #endif +} + +#endif diff --git a/deps/ledger-zxlib/app/ui/view_inspect_x.c b/deps/ledger-zxlib/app/ui/view_inspect_x.c new file mode 100644 index 00000000..f42ce141 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_inspect_x.c @@ -0,0 +1,198 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "bolos_target.h" + +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) +#include "view_internal.h" +#include "view_nano_inspect.h" +#include "view_templates.h" +#include "view_nano.h" +#include "zxmacros.h" + +extern const ux_flow_step_t *ux_review_flow[MAX_REVIEW_UX_SCREENS]; + +static void h_inspect_loop_start(); +static void h_inspect_loop_inside(); +static void h_inspect_loop_end(); + +static void h_inspect(); +static void h_back(); +static void h_rootTxn(); + +void run_root_txn_flow(); + +uint8_t flow_inside_inspect_loop; +extern unsigned int review_type; + +// Menu to recursively inspect elements from a transaction +UX_STEP_VALID(ux_inspect_flow_root_step, pb, h_rootTxn(), { &C_icon_back, "Go to root" }); + +UX_STEP_INIT(ux_inspect_flow_start_step, NULL, NULL, { h_inspect_loop_start(); }); +UX_STEP_CB_INIT(ux_inspect_flow_step, bnnn_paging, h_inspect_loop_inside(), h_inspect(), { .title = viewdata.key, .text = viewdata.value, }); + +UX_STEP_INIT(ux_inspect_flow_end_step, NULL, NULL, { h_inspect_loop_end(); }); + +UX_STEP_VALID(ux_inspect_flow_back_step, pb, h_back(), { &C_icon_back, "BACK" }); + +void view_inspect_show_impl(){ + // h_inspect_loop_inside(); + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + + uint8_t index = 0; + ux_review_flow[index++] = &ux_inspect_flow_root_step; + ux_review_flow[index++] = &ux_inspect_flow_start_step; + ux_review_flow[index++] = &ux_inspect_flow_step; + ux_review_flow[index++] = &ux_inspect_flow_end_step; + ux_review_flow[index++] = &ux_inspect_flow_back_step; + ux_review_flow[index++] = FLOW_END_STEP; + + ux_flow_init(0, ux_review_flow, &ux_inspect_flow_start_step); +} + +void inspect_init() { + #ifdef HAVE_INSPECT + h_inspect_init(); + if (!viewdata.viewfuncCanInspectItem(viewdata.innerField.level, + viewdata.innerField.trace, + viewdata.innerField.paging.itemIdx)) { + h_rootTxn(); + return; + } + + const zxerr_t err = h_inspect_update_data(); + if (err != zxerr_ok) { + // Show error + view_error_show(); + // h_rootTxn(); + return; + } + view_inspect_show_impl(); + #endif +} + +void h_inspect() { + if (viewdata.viewfuncCanInspectItem == NULL) { + view_error_show(); + return; + } + + // Check if we can inspect this element + if (viewdata.innerField.level >= MAX_DEPTH || + !viewdata.viewfuncCanInspectItem(viewdata.innerField.level+1, + viewdata.innerField.trace, + viewdata.innerField.paging.itemIdx)) { + flow_inside_inspect_loop = 0; + h_inspect_update_data(); + view_inspect_show_impl(); + return; + } + + // Proceed with inspection + viewdata.innerField.level++; + viewdata.innerField.trace[viewdata.innerField.level] = viewdata.innerField.paging.itemIdx; + viewdata.innerField.paging.itemIdx = 0; + viewdata.innerField.paging.pageCount = 1; + viewdata.innerField.paging.itemCount = 0xFF; + flow_inside_inspect_loop = 0; + + h_inspect_update_data(); + view_inspect_show_impl(); +} + +void h_rootTxn() { + viewdata.innerField.level = 0; + viewdata.itemIdx = viewdata.innerField.trace[viewdata.innerField.level]; + h_paging_increase(); + run_root_txn_flow(); +} + +void h_back() { + if (viewdata.innerField.level > 1) { + viewdata.innerField.paging.itemIdx = viewdata.innerField.trace[viewdata.innerField.level]; + viewdata.innerField.level--; + viewdata.innerField.paging.pageCount = 1; + viewdata.innerField.paging.itemCount = 0xFF; + flow_inside_inspect_loop = 0; + + h_inspect_update_data(); + view_inspect_show_impl(); + return; + } + + // Go back to root txn review + h_rootTxn(); +} + +void h_inspect_loop_inside() { + ZEMU_LOGF(50, "h_inspect_loop_inside\n") + flow_inside_inspect_loop = 1; +} + +void h_inspect_loop_start() { + ZEMU_LOGF(50, "h_inspect_loop_start\n") + if (flow_inside_inspect_loop) { + // coming from right + + if (!h_can_decrease(&viewdata.innerField.paging)) { + // exit to the left + flow_inside_inspect_loop = 0; + ux_flow_prev(); + return; + } + + h_decrease(&viewdata.innerField.paging); + } else { + // coming from left + flow_inside_inspect_loop = 1; + } + + h_inspect_update_data(); + ux_flow_next(); +} + +void h_inspect_loop_end() { + ZEMU_LOGF(50, "h_inspect_loop_end\n") + if (flow_inside_inspect_loop) { + // coming from left + if (!h_can_increase(&viewdata.innerField.paging, 0)) { + // exit to the right + flow_inside_inspect_loop = 0; + ux_flow_next(); + return; + } + h_increase(&viewdata.innerField.paging, 0); + + } else { + // coming from right + // make sure that we are getting the last itemIdx/pageIdx + h_inspect_loop_inside(); + } + + const zxerr_t err = h_inspect_update_data(); + if (err != zxerr_ok && err != zxerr_no_data) { + view_error_show(); + return; + } + + ux_layout_bnnn_paging_reset(); + CUR_FLOW.prev_index = CUR_FLOW.index-2; + CUR_FLOW.index--; + ux_flow_relayout(); +} + +#endif diff --git a/deps/ledger-zxlib/app/ui/view_internal.h b/deps/ledger-zxlib/app/ui/view_internal.h new file mode 100644 index 00000000..4d36366a --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_internal.h @@ -0,0 +1,172 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax AG +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include +#include "coin.h" +#include "zxerror.h" +#include "view.h" + +#define CUR_FLOW G_ux.flow_stack[G_ux.stack_count-1] + +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) +#define MAX_CHARS_PER_KEY_LINE 64 +#define MAX_CHARS_PER_VALUE1_LINE 4096 +#define MAX_CHARS_HEXMESSAGE 160 +#elif defined(TARGET_STAX) +#include "nbgl_use_case.h" +#define MAX_LINES_PER_PAGE_REVIEW NB_MAX_LINES_IN_REVIEW +#define MAX_CHARS_PER_KEY_LINE 64 +#define MAX_CHARS_PER_VALUE1_LINE 120 //180 +#define MAX_CHARS_HEXMESSAGE 160 +#else +#ifndef MAX_CHARS_PER_VALUE_LINE +#define MAX_CHARS_PER_VALUE_LINE (17) +#endif +#define MAX_CHARS_PER_KEY_LINE (MAX_CHARS_PER_VALUE_LINE+1) +#define MAX_CHARS_PER_VALUE1_LINE (2*MAX_CHARS_PER_VALUE_LINE+1) +#define MAX_CHARS_PER_VALUE2_LINE (MAX_CHARS_PER_VALUE_LINE+1) +#define MAX_CHARS_HEXMESSAGE 40 +#endif + +// This takes data from G_io_apdu_buffer that is prefilled with the address + +#define APPROVE_LABEL "APPROVE" +#define REJECT_LABEL "REJECT" + +#define SHORTCUT_TITLE "Skip" +#define SHORTCUT_VALUE "fields" +#define SHORTCUT_STR "Skip fields" + +//Review string can be customizable in each app +#if !defined(REVIEW_SCREEN_TITLE) && !defined(REVIEW_SCREEN_TX_VALUE) && !defined(REVIEW_SCREEN_ADDR_VALUE) + #define REVIEW_SCREEN_TITLE "Please" + #define REVIEW_SCREEN_TXN_VALUE "review" + #define REVIEW_SCREEN_ADDR_VALUE "review" +#endif + +static const char* review_key = REVIEW_SCREEN_TITLE; +static const char* review_txvalue = REVIEW_SCREEN_TXN_VALUE; +static const char* review_addrvalue = REVIEW_SCREEN_ADDR_VALUE; +static const char* review_keyconfig = "Review"; +static const char* review_configvalue = "configuration"; + +static const char* shortcut_key = SHORTCUT_TITLE; +static const char* shortcut_value = SHORTCUT_VALUE; + +#if defined(TARGET_NANOS) + #if defined(REVIEW_SCREEN_ENABLED) && defined(SHORTCUT_MODE_ENABLED) + #define INTRO_PAGES 2 + #elif defined(REVIEW_SCREEN_ENABLED) || defined(SHORTCUT_MODE_ENABLED) + #define INTRO_PAGES 1 + #else + #define INTRO_PAGES 0 + #endif +#else + #define INTRO_PAGES 0 +#endif + +typedef struct { + struct { +#if defined(TARGET_STAX) + char* key; + char* value; + char keys[NB_MAX_DISPLAYED_PAIRS_IN_REVIEW][MAX_CHARS_PER_KEY_LINE]; + char values[NB_MAX_DISPLAYED_PAIRS_IN_REVIEW][MAX_CHARS_PER_VALUE1_LINE]; +#else + char key[MAX_CHARS_PER_KEY_LINE]; + char value[MAX_CHARS_PER_VALUE1_LINE]; +#if defined(TARGET_NANOS) + char value2[MAX_CHARS_PER_VALUE2_LINE]; +#endif +#endif + }; + viewfunc_getItem_t viewfuncGetItem; + viewfunc_getNumItems_t viewfuncGetNumItems; + viewfunc_accept_t viewfuncAccept; + viewfunc_initialize_t viewfuncInitialize; + + viewfunc_getInnerItem_t viewfuncGetInnerItem; + viewfunc_getNumItems_t viewfuncGetInnerNumItems; + viewfunc_canInspectItem_t viewfuncCanInspectItem; + +#ifdef APP_SECRET_MODE_ENABLED + uint8_t secret_click_count; +#endif + uint8_t itemIdx; + uint8_t itemCount; + uint8_t pageIdx; + uint8_t pageCount; + + inner_state_t innerField; +} view_t; + +typedef enum { + view_action_unknown, + view_action_accept, + view_action_reject, +} view_action_t; + +extern view_t viewdata; + +#define print_title(...) snprintf(viewdata.title, sizeof(viewdata.title), __VA_ARGS__) +#define print_key(...) snprintf(viewdata.key, sizeof(viewdata.key), __VA_ARGS__); +#define print_value(...) snprintf(viewdata.value, sizeof(viewdata.value), __VA_ARGS__); + +#if defined(TARGET_NANOS) +#define print_value2(...) snprintf(viewdata.value2, sizeof(viewdata.value2), __VA_ARGS__); +#endif + +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// + +void view_idle_show_impl(uint8_t item_idx, const char *statusString); + +void view_message_impl(const char *title, const char *message); + +void view_error_show_impl(); + +void view_custom_error_show_impl(); + +void h_paging_init(); + +void h_inspect_init(); + +void view_review_show_impl(unsigned int requireReply); + +void view_inspect_show_impl(); + +void view_initialize_show_impl(uint8_t item_idx, const char *statusString); + +void h_approve(unsigned int _); + +void h_reject(unsigned int requireReply); + +void h_review_update(); + +void h_error_accept(unsigned int _); + +zxerr_t h_review_update_data(); + +zxerr_t h_inspect_update_data(); diff --git a/deps/ledger-zxlib/app/ui/view_nano.c b/deps/ledger-zxlib/app/ui/view_nano.c new file mode 100644 index 00000000..5285447d --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_nano.c @@ -0,0 +1,316 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "bolos_target.h" + +#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) + +#include "view_internal.h" +#include "view_nano.h" + +#include "view.h" +#include "coin.h" +#include "view_internal.h" +#include "crypto.h" + +#include "actions.h" +#include "apdu_codes.h" +#include "ux.h" +#include "bagl.h" +#include "zxmacros.h" +#include "view_templates.h" +#include "tx.h" +#include "addr.h" +#include "app_mode.h" +#include "zxerror.h" + +#include +#include +#include + +extern unsigned int review_type; + +uint8_t getIntroPages() { +#if defined(SHORTCUT_MODE_ENABLED) && defined(TARGET_NANOS) + if (review_type == REVIEW_ADDRESS || !app_mode_shortcut()) { + return INTRO_PAGES ? INTRO_PAGES - 1 : 0; + } +#endif + return INTRO_PAGES; +} + +bool h_paging_intro_screen() { + return viewdata.itemIdx < getIntroPages(); +} + +void h_initialize() { + ZEMU_LOGF(50, "Initialize function\n") + if (viewdata.viewfuncInitialize != NULL) { + viewdata.viewfuncInitialize(); + } + view_idle_show(0, NULL); + UX_WAIT(); +} + +void view_error_show() { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "ERROR"); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "SHOWING DATA"); + view_error_show_impl(); +} + +void view_custom_error_show(const char *upper, const char *lower) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", upper); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", lower); + view_custom_error_show_impl(); +} + +/////////////////////////////////// +// Paging related +bool h_paging_can_increase() { + if (viewdata.pageIdx + 1 < viewdata.pageCount) { + zemu_log_stack("h_paging_can_increase"); + return true; + } + + // passed page count, go to next index + if (viewdata.itemCount > 0 && viewdata.itemIdx < (viewdata.itemCount - 1 + INCLUDE_ACTIONS_COUNT)) { + zemu_log_stack("h_paging_can_increase"); + return true; + } + + zemu_log_stack("h_paging_can_increase NO"); + return false; +} + +void h_paging_increase() { + zemu_log_stack("h_paging_increase"); + + if (viewdata.pageIdx + 1 < viewdata.pageCount) { + // increase page + viewdata.pageIdx++; + return; + } + + // passed page count, go to next index + if (viewdata.itemCount > 0 && viewdata.itemIdx < (viewdata.itemCount - 1 + INCLUDE_ACTIONS_COUNT)) { + viewdata.itemIdx++; + viewdata.pageIdx = 0; + } +} + +bool h_paging_can_decrease() { + if (viewdata.pageIdx != 0) { + zemu_log_stack("h_paging_can_decrease"); + return true; + } + + if (viewdata.itemIdx > 0) { + zemu_log_stack("h_paging_can_decrease"); + return true; + } + + zemu_log_stack("h_paging_can_decrease NO"); + return false; +} + +void h_paging_decrease() { + ZEMU_LOGF(50, "h_paging_decrease Idx %d\n", viewdata.itemIdx) + + if (viewdata.pageIdx != 0) { + viewdata.pageIdx--; + zemu_log_stack("page--"); + return; + } + + if (viewdata.itemIdx > 0) { + viewdata.itemIdx--; + zemu_log_stack("item--"); + // jump to last page. update will cap this value + viewdata.pageIdx = 255; + } +} + +#ifdef INCLUDE_ACTIONS_AS_ITEMS +bool is_accept_item(){ + return viewdata.itemIdx == viewdata.itemCount - 1; +} + +void set_accept_item(){ + viewdata.itemIdx = viewdata.itemCount - 1; + viewdata.pageIdx = 0; +} + +bool is_reject_item(){ + return viewdata.itemIdx == viewdata.itemCount; +} +#endif + +zxerr_t h_review_update_data() { + if (viewdata.viewfuncGetNumItems == NULL) { + zemu_log_stack("h_review_update_data - GetNumItems==NULL"); + return zxerr_no_data; + } + if (viewdata.viewfuncGetItem == NULL) { + zemu_log_stack("h_review_update_data - GetItem==NULL"); + return zxerr_no_data; + } + + if (viewdata.viewfuncGetItem == NULL) { + zemu_log_stack("h_review_update_data - GetItem==NULL"); + return zxerr_no_data; + } + + if (viewdata.viewfuncGetItem == NULL) { + zemu_log_stack("h_review_update_data - GetItem==NULL"); + return zxerr_no_data; + } + + char buffer[20]; + snprintf(buffer, sizeof(buffer), "update Idx %d/%d", viewdata.itemIdx, viewdata.pageIdx); + zemu_log_stack(buffer); + +#ifdef INCLUDE_ACTIONS_AS_ITEMS + viewdata.pageCount = 1; + + if( is_accept_item() ){ + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s",""); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", APPROVE_LABEL); + splitValueField(); + zemu_log_stack("show_accept_action - accept item"); + viewdata.pageIdx = 0; + return zxerr_ok; + } + + if( is_reject_item() ){ + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", ""); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", REJECT_LABEL); + splitValueField(); + zemu_log_stack("show_reject_action - reject item"); + viewdata.pageIdx = 0; + return zxerr_ok; + } + + if (h_paging_intro_screen()) { + char* intro_key = NULL; + char* intro_value = NULL; + +#if defined(REVIEW_SCREEN_ENABLED) + switch (viewdata.itemIdx) { + case 0: + intro_key = PIC(review_key); + switch (review_type) + { + case REVIEW_UI: + intro_key = PIC(review_keyconfig); + intro_value = PIC(review_configvalue); + break; + + case REVIEW_ADDRESS: + intro_value = PIC(review_addrvalue); + break; + + case REVIEW_TXN: + default: + intro_value = PIC(review_txvalue); + break; + } + break; + #if defined(SHORTCUT_MODE_ENABLED) + case 1: + intro_key = PIC(shortcut_key); + intro_value = PIC(shortcut_value); + break; + #endif + default: + return zxerr_no_data; + } +#elif defined(SHORTCUT_MODE_ENABLED) + intro_key = PIC(shortcut_key); + intro_value = PIC(shortcut_value); +#else + return zxerr_no_data; +#endif + + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", intro_key); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", intro_value); + splitValueField(); + viewdata.pageIdx = 0; + return zxerr_ok; + } +#endif + + do { + CHECK_ZXERR(viewdata.viewfuncGetNumItems(&viewdata.itemCount)) + viewdata.itemCount += getIntroPages(); + + if (viewdata.itemIdx - getIntroPages() < 0) { + return zxerr_out_of_bounds; + } + const uint8_t realItemIdx = viewdata.itemIdx - getIntroPages(); + + //Verify how many chars fit in display (nanos) + CHECK_ZXERR(viewdata.viewfuncGetItem( + realItemIdx, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + 0, &viewdata.pageCount)) + viewdata.pageCount = 1; + const max_char_display dyn_max_char_per_line1 = get_max_char_per_line(); + + // be sure we are not out of bounds + CHECK_ZXERR(viewdata.viewfuncGetItem( + realItemIdx, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, dyn_max_char_per_line1, + 0, &viewdata.pageCount)) + if (viewdata.pageCount != 0 && viewdata.pageIdx > viewdata.pageCount) { + // try again and get last page + viewdata.pageIdx = viewdata.pageCount - 1; + } + CHECK_ZXERR(viewdata.viewfuncGetItem( + realItemIdx, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, dyn_max_char_per_line1, + viewdata.pageIdx, &viewdata.pageCount)) + + viewdata.itemCount++; + + if (viewdata.pageCount > 1) { + uint8_t keyLen = strnlen(viewdata.key, MAX_CHARS_PER_KEY_LINE); + if (keyLen < MAX_CHARS_PER_KEY_LINE) { + snprintf(viewdata.key + keyLen, + MAX_CHARS_PER_KEY_LINE - keyLen, + " [%d/%d]", + viewdata.pageIdx + 1, + viewdata.pageCount); + } + } + + if (viewdata.pageCount == 0) { + h_paging_increase(); + } + } while (viewdata.pageCount == 0); + + splitValueAddress(); + return zxerr_ok; +} + +/////////////////////////////////// +// General +void io_seproxyhal_display(const bagl_element_t *element) { + io_seproxyhal_display_default(element); +} + +#endif diff --git a/deps/ledger-zxlib/app/ui/view_nano.h b/deps/ledger-zxlib/app/ui/view_nano.h new file mode 100644 index 00000000..83ed1ac2 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_nano.h @@ -0,0 +1,45 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once +#include "bolos_target.h" +#include + +#if defined(TARGET_NANOS) +#define INCLUDE_ACTIONS_AS_ITEMS 2 +#define INCLUDE_ACTIONS_COUNT (INCLUDE_ACTIONS_AS_ITEMS-1) +typedef uint8_t max_char_display; +#else +#define INCLUDE_ACTIONS_COUNT 0 +typedef int max_char_display; +#endif + +#define MAX_REVIEW_UX_SCREENS 10 + +void splitValueField(); +void splitValueAddress(); +max_char_display get_max_char_per_line(); + +void h_initialize(); + +bool h_paging_can_increase(); + +void h_paging_increase(); + +bool h_paging_can_decrease(); + +void h_paging_decrease(); + +bool h_paging_intro_screen(); diff --git a/deps/ledger-zxlib/app/ui/view_nano_inspect.c b/deps/ledger-zxlib/app/ui/view_nano_inspect.c new file mode 100644 index 00000000..0ad7e082 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_nano_inspect.c @@ -0,0 +1,175 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "bolos_target.h" + +#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) +#include "view_nano_inspect.h" +#include "view_internal.h" +#include "view_templates.h" +#include "view_nano.h" +#include "zxmacros.h" + +void h_inspect_init() { + ZEMU_LOGF(50, "h_inspect_init\n") + viewdata.innerField.level = 0; + viewdata.innerField.trace[viewdata.innerField.level] = viewdata.itemIdx; + + viewdata.innerField.paging.itemIdx = 0; + viewdata.innerField.paging.pageIdx = 0; + viewdata.innerField.paging.pageCount = 1; + viewdata.innerField.paging.itemCount = 0xFF; +} + +void view_inspect_init(viewfunc_getInnerItem_t view_funcGetInnerItem, + viewfunc_getNumItems_t view_funcGetInnerNumItems, + viewfunc_canInspectItem_t view_funcCanInspectItem) { + viewdata.viewfuncGetInnerItem = view_funcGetInnerItem; + viewdata.viewfuncGetInnerNumItems = view_funcGetInnerNumItems; + viewdata.viewfuncCanInspectItem = view_funcCanInspectItem; +} + +bool h_paging_inspect_go_to_root_screen() { + return (viewdata.innerField.paging.itemIdx == 0) + && (viewdata.innerField.trace[0] != 0); +} + +bool h_paging_inspect_back_screen() { + return (viewdata.innerField.paging.itemIdx == (viewdata.innerField.paging.itemCount - 1)) + && (viewdata.innerField.trace[0] != 0); +} + +bool h_can_increase(paging_t *paging, uint8_t actionsCount) { + if (paging->pageIdx + 1 < paging->pageCount) { + ZEMU_LOGF(50, "h_inspect_paging_can_increase\n") + return true; + } + + // passed page count, go to next index + if (paging->itemCount > 0 && paging->itemIdx < (paging->itemCount - 1 + actionsCount)) { + ZEMU_LOGF(50, "h_inspect_paging_can_increase\n") + return true; + } + + ZEMU_LOGF(50, "h_inspect_paging_can_increase NO\n") + return false; +} + +void h_increase(paging_t *paging, uint8_t actionsCount) { + if (paging == NULL) { + return; + } + ZEMU_LOGF(50, "h_inspect_paging_increase\n") + + if (paging->pageIdx + 1 < paging->pageCount) { + ZEMU_LOGF(50, "pageIdx++\n") + // increase page + paging->pageIdx++; + return; + } + + // passed page count, go to next index + if (paging->itemCount > 0 && paging->itemIdx < (paging->itemCount - 1 + actionsCount)) { + ZEMU_LOGF(50, "itemIdx++\n") + paging->itemIdx++; + paging->pageIdx = 0; + } +} + +bool h_can_decrease(paging_t *paging) { + if (paging != NULL && (paging->pageIdx != 0 || paging->itemIdx > 0)) { + ZEMU_LOGF(50, "h_inspect_paging_can_decrease\n") + return true; + } + ZEMU_LOGF(50, "h_inspect_paging_can_decrease NO\n") + return false; +} + +void h_decrease(paging_t *paging) { + if (paging == NULL) { + return; + } + + ZEMU_LOGF(50, "h_inspect_paging_decrease Idx %d\n", paging->itemIdx) + + if (paging->pageIdx != 0) { + paging->pageIdx--; + ZEMU_LOGF(50, "page-- : %d\n", paging->pageIdx) + return; + } + + if (paging->itemIdx > 0) { + paging->itemIdx--; + ZEMU_LOGF(50, "inner page--\n") + paging->pageIdx = 0; + } +} + +zxerr_t h_inspect_update_data() { + if (viewdata.viewfuncGetInnerNumItems == NULL) { + zemu_log_stack("h_review_update_data - GetNumItems==NULL"); + return zxerr_no_data; + } + + if (viewdata.viewfuncGetInnerItem == NULL) { + zemu_log_stack("h_review_update_data - GetInnerItem==NULL"); + return zxerr_no_data; + } + + // Make a copy cause we need to update the index for NanoS + paging_t page = viewdata.innerField.paging; + ZEMU_LOGF(50, "ItemsIdx: %d | %d\n", page.itemIdx, page.itemCount) + CHECK_ZXERR(viewdata.viewfuncGetInnerNumItems(&viewdata.innerField.paging.itemCount)) + +#ifdef TARGET_NANOS + viewdata.innerField.paging.itemCount += 2; + viewdata.innerField.paging.pageCount = 1; + if (h_paging_inspect_go_to_root_screen()) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s",""); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", "Go to root"); + splitValueField(); + page.pageIdx = 0; + return zxerr_ok; + } + + if (h_paging_inspect_back_screen()) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s",""); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", "BACK"); + splitValueField(); + page.pageIdx = 0; + return zxerr_ok; + } + + page.itemIdx--; +#endif + + ui_field_t thisItem = { + .displayIdx = page.itemIdx, + .outKey = viewdata.key, + .outKeyLen = MAX_CHARS_PER_KEY_LINE, + .outVal = viewdata.value, + .outValLen = MAX_CHARS_PER_VALUE1_LINE, + .pageIdx = viewdata.innerField.paging.pageIdx, + .pageCount = &viewdata.innerField.paging.pageCount, + }; + + CHECK_ZXERR(viewdata.viewfuncGetInnerItem( + viewdata.innerField.level, + viewdata.innerField.trace, + &thisItem)) + + return zxerr_ok; +} +#endif diff --git a/deps/ledger-zxlib/app/ui/view_nano_inspect.h b/deps/ledger-zxlib/app/ui/view_nano_inspect.h new file mode 100644 index 00000000..4576dce2 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_nano_inspect.h @@ -0,0 +1,32 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once +#include +#include "view.h" + +bool h_can_increase(paging_t *paging, uint8_t actionsCount); + +void h_increase(paging_t *paging, uint8_t actionsCount); + +bool h_can_decrease(paging_t *paging); + +void h_decrease(paging_t *paging); + +void inspect_init(); + +bool h_paging_inspect_go_to_root_screen(); + +bool h_paging_inspect_back_screen(); diff --git a/deps/ledger-zxlib/app/ui/view_s.c b/deps/ledger-zxlib/app/ui/view_s.c new file mode 100644 index 00000000..d9ca837e --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_s.c @@ -0,0 +1,465 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax AG +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "bolos_target.h" + +#if defined(TARGET_NANOS) + +#include "app_mode.h" +#include "view.h" +#include "view_internal.h" +#include "apdu_codes.h" +#include "ux.h" +#include "bagl.h" +#include "zxmacros.h" +#include "view_templates.h" +#include "zxutils_ledger.h" +#include "view_nano.h" +#include "view_nano_inspect.h" + +#include "menu_handler.h" + +#define BAGL_WIDTH 128 +#define BAGL_HEIGHT 32 +#define BAGL_WIDTH_MARGIN 10 + +static bool exceed_pixel_in_display(const uint8_t length); + +void account_enabled(); +void shortcut_enabled(); + +static void h_expert_toggle(); +static void h_expert_update(); +static void h_review_button_left(); +static void h_review_button_right(); +static void h_review_button_both(); +static void h_view_address(); + +bool is_accept_item(); +void set_accept_item(); +bool is_reject_item(); + +#ifdef APP_SECRET_MODE_ENABLED +static void h_secret_click(); +#endif + +#ifdef APP_ACCOUNT_MODE_ENABLED +static void h_account_toggle(); +static void h_account_update(); +#endif + +#ifdef SHORTCUT_MODE_ENABLED +static void h_shortcut_toggle(); +static void h_shortcut_update(); +#endif + +enum MAINMENU_SCREENS { + SCREEN_HOME = 0, + SCREEN_EXPERT, +#ifdef APP_ACCOUNT_MODE_ENABLED + SCREEN_ACCOUNT, +#endif +#ifdef SHORTCUT_MODE_ENABLED + SCREEN_SHORTCUT, +#endif +}; + +ux_state_t ux; +extern ux_menu_state_t ux_menu; +extern unsigned int review_type; + +void os_exit(uint32_t id) { + (void)id; + os_sched_exit(0); +} + +const ux_menu_entry_t menu_main[] = { + {NULL, NULL, 0, &C_icon_app, MENU_MAIN_APP_LINE1, viewdata.key, 33, 12}, + {NULL, h_expert_toggle, 0, &C_icon_app, "Expert mode:", viewdata.value, 33, 12}, + {NULL, NULL, 0, &C_icon_app, APPVERSION_LINE1, APPVERSION_LINE2, 33, 12}, + {NULL, h_view_address, 0, &C_icon_app, "View", "address", 33, 12}, + + {NULL, +#ifdef APP_SECRET_MODE_ENABLED + h_secret_click, +#else + NULL, +#endif + 0, &C_icon_app, "License: ", "Apache 2.0", 33, 12}, + + {NULL, os_exit, 0, &C_icon_dashboard, "Quit", NULL, 50, 29}, + UX_MENU_END +}; + +const ux_menu_entry_t menu_initialize[] = { + {NULL, NULL, 0, &C_icon_app, MENU_MAIN_APP_LINE1, "Not Ready", 33, 12}, + {NULL, h_initialize, 0, &C_icon_app, "Click to", "Initialize", 33, 12}, + {NULL, NULL, 0, &C_icon_app, APPVERSION_LINE1, APPVERSION_LINE2, 33, 12}, + {NULL, NULL, 0, &C_icon_app, "License: ", "Apache 2.0", 33, 12}, + {NULL, os_exit, 0, &C_icon_dashboard, "Quit", NULL, 50, 29}, + UX_MENU_END +}; + +const ux_menu_entry_t menu_custom_error[] = { + {NULL, NULL, 0, &C_icon_warning, viewdata.key, viewdata.value, 33, 12}, + {NULL, h_error_accept, 0, &C_icon_validate_14, "Ok", NULL, 50, 29}, + UX_MENU_END +}; + +static const bagl_element_t view_message[] = { + UI_BACKGROUND, + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 1, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), +}; + +static const bagl_element_t view_review[] = { + UI_BACKGROUND_LEFT_RIGHT_ICONS, + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 1, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), + UI_LabelLine(UIID_LABEL + 2, 0, 30, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value2), +}; + +static const bagl_element_t view_error[] = { + UI_FillRectangle(0, 0, 0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT, 0x000000, 0xFFFFFF), + UI_Icon(0, 128 - 7, 0, 7, 7, BAGL_GLYPH_ICON_CHECK), + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 0, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), + UI_LabelLineScrolling(UIID_LABELSCROLL, 0, 30, 128, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value2), +}; + +static unsigned int view_error_button(unsigned int button_mask, __Z_UNUSED unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + break; + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + h_error_accept(0); + break; + } + return 0; +} + +static unsigned int view_message_button(unsigned int button_mask, __Z_UNUSED unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + break; + } + return 0; +} + +static unsigned int view_review_button(unsigned int button_mask, __Z_UNUSED unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + h_review_button_both(); + break; + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + // Press left to progress to the previous element + h_review_button_left(); + break; + + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + // Press right to progress to the next element + h_review_button_right(); + break; + } + return 0; +} + +const bagl_element_t* idle_preprocessor(__Z_UNUSED const ux_menu_entry_t* entry, bagl_element_t* element) { + switch(ux_menu.current_entry) { + case SCREEN_HOME: + break; + case SCREEN_EXPERT: + h_expert_update(); + break; +#ifdef APP_ACCOUNT_MODE_ENABLED + case SCREEN_ACCOUNT: + h_account_update(); + break; +#endif +#ifdef SHORTCUT_MODE_ENABLED + case SCREEN_SHORTCUT: + h_shortcut_update(); + break; +#endif + default: + break; + } + return element; +} + +const bagl_element_t *view_prepro(const bagl_element_t *element) { + switch (element->component.userid) { + case UIID_ICONLEFT: + if (!h_paging_can_decrease() || h_paging_inspect_go_to_root_screen()){ + return NULL; + } + UX_CALLBACK_SET_INTERVAL(2000) + break; + case UIID_ICONRIGHT: + if (!h_paging_can_increase() || h_paging_inspect_back_screen()){ + return NULL; + } + UX_CALLBACK_SET_INTERVAL(2000) + break; + case UIID_ICONREVIEW: + if (!h_paging_intro_screen()){ + return NULL; + } + UX_CALLBACK_SET_INTERVAL(2000) + break; + case UIID_LABELSCROLL: + UX_CALLBACK_SET_INTERVAL( + MAX(3000, 1000 + bagl_label_roundtrip_duration_ms(element, 7)) + ); + break; + } + return element; +} + +const bagl_element_t *view_prepro_idle(const bagl_element_t *element) { + switch (element->component.userid) { + case UIID_ICONLEFT: + case UIID_ICONRIGHT: + return NULL; + } + return element; +} + +void h_review_update() { + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + UX_DISPLAY(view_review, view_prepro) + break; + default: + view_error_show(); + break; + } +} + + +void h_review_button_left() { + zemu_log_stack("h_review_button_left"); + h_paging_decrease(); + h_review_update(); +} + +void h_review_button_right() { + zemu_log_stack("h_review_button_right"); + h_paging_increase(); + h_review_update(); +} + +static void h_review_action(unsigned int requireReply) { + if( is_accept_item() ){ + zemu_log_stack("action_accept"); + h_approve(1); + return; + } + + if( is_reject_item() ){ + zemu_log_stack("action_reject"); + h_reject(requireReply); + return; + } + + zemu_log_stack("quick accept"); + if (app_mode_shortcut()) { + set_accept_item(); + h_review_update(); + return; + } + + inspect_init(); +} + +void h_review_button_both() { + zemu_log_stack("h_review_button_both"); + h_review_action(review_type); +} + +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// + +void view_initialize_show_impl(uint8_t item_idx, const char *statusString) { + if (statusString == NULL ) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", MENU_MAIN_APP_LINE2); + } else { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", statusString); + } + UX_MENU_DISPLAY(item_idx, menu_initialize, NULL); +} + +void view_idle_show_impl(uint8_t item_idx, const char *statusString) { + if (statusString == NULL ) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", MENU_MAIN_APP_LINE2); +#ifdef APP_SECRET_MODE_ENABLED + if (app_mode_secret()) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", MENU_MAIN_APP_LINE2_SECRET); + } +#endif + } else { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", statusString); + } + UX_MENU_DISPLAY(item_idx, menu_main, idle_preprocessor); +} + +void view_message_impl(const char *title, const char *message) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", title); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE_LINE, "%s", message); + UX_DISPLAY(view_message, view_prepro_idle) +} + +void view_error_show_impl() { + UX_DISPLAY(view_error, view_prepro) +} + +void view_custom_error_show_impl() { + UX_MENU_DISPLAY(0, menu_custom_error, NULL); +} + +void h_expert_toggle() { + app_mode_set_expert(!app_mode_expert()); + view_idle_show(1, NULL); +} + +void h_expert_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE_LINE, "disabled"); + if (app_mode_expert()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE_LINE, "enabled"); + } +} + +static void h_view_address() { + handleMenuShowAddress(); +} + +#ifdef APP_ACCOUNT_MODE_ENABLED +void h_account_toggle() { + if(app_mode_expert()) { + account_enabled(); + } else { + view_idle_show(2, NULL); + } +} + +void h_account_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, ACCOUNT_DEFAULT); + if (app_mode_account()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, ACCOUNT_SECONDARY); + } +} +#endif + +#ifdef SHORTCUT_MODE_ENABLED +void h_shortcut_toggle() { + if (app_mode_expert() && !app_mode_shortcut()) { + shortcut_enabled(); + return; + } + app_mode_set_shortcut(0); + view_idle_show(SCREEN_SHORTCUT, NULL); +} + +void h_shortcut_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "disabled"); + if (app_mode_shortcut()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "enabled"); + } +} +#endif + +#ifdef APP_SECRET_MODE_ENABLED +void h_secret_click() { + if (COIN_SECRET_REQUIRED_CLICKS == 0) { + // There is no secret mode + return; + } + + viewdata.secret_click_count++; + + char buffer[50]; + snprintf(buffer, sizeof(buffer), "secret click %d\n", viewdata.secret_click_count); + zemu_log(buffer); + + if (viewdata.secret_click_count >= COIN_SECRET_REQUIRED_CLICKS) { + secret_enabled(); + viewdata.secret_click_count = 0; + } +} +#endif + +void view_review_show_impl(unsigned int requireReply) { + zemu_log_stack("view_review_show_impl"); + review_type = requireReply; + + h_paging_init(); + + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + UX_DISPLAY(view_review, view_prepro) + break; + default: + view_error_show(); + break; + } +} + +void splitValueField() { + print_value2(""); + const uint16_t vlen = (uint16_t) strnlen(viewdata.value, MAX_CHARS_PER_VALUE1_LINE); + if (vlen > MAX_CHARS_PER_VALUE2_LINE - 1) { + snprintf(viewdata.value2, MAX_CHARS_PER_VALUE2_LINE, "%s", viewdata.value + MAX_CHARS_PER_VALUE_LINE); + viewdata.value[MAX_CHARS_PER_VALUE_LINE] = 0; + } +} +void splitValueAddress() { + uint8_t len = MAX_CHARS_PER_VALUE_LINE; + bool exceeding_max = exceed_pixel_in_display(len); + while(exceeding_max && len--) { + exceeding_max = exceed_pixel_in_display(len); + } + print_value2(""); + const uint16_t vlen = (uint16_t) strnlen(viewdata.value, MAX_CHARS_PER_VALUE1_LINE); + //if viewdata.value == NULL --> len = 0 + if (vlen > len && len > 0) { + snprintf(viewdata.value2, MAX_CHARS_PER_VALUE2_LINE, "%s", viewdata.value + len); + viewdata.value[len] = 0; + } +} + +max_char_display get_max_char_per_line() { + uint8_t len = MAX_CHARS_PER_VALUE_LINE; + bool exceeding_max = exceed_pixel_in_display(len); + while(exceeding_max && len--) { + exceeding_max = exceed_pixel_in_display(len); + } + //MAX_CHARS_PER_VALUE1_LINE is defined this way + return (len > 0) ? (2 * len + 1) : len; +} + +bool exceed_pixel_in_display(const uint8_t length) { + const unsigned short strWidth = zx_compute_line_width_light(viewdata.value, length); + return (strWidth >= (BAGL_WIDTH - BAGL_WIDTH_MARGIN)); +} +#endif diff --git a/deps/ledger-zxlib/app/ui/view_stax.c b/deps/ledger-zxlib/app/ui/view_stax.c new file mode 100644 index 00000000..a93ec306 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_stax.c @@ -0,0 +1,555 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "bolos_target.h" + +#if defined(TARGET_STAX) + +#include "view_internal.h" +#include "ux.h" +#include "app_mode.h" +#include "nbgl_use_case.h" +#include "actions.h" +#include "menu_handler.h" + +#include "nbgl_page.h" + +#ifdef APP_SECRET_MODE_ENABLED +zxerr_t secret_enabled(); +#endif + +#ifdef APP_ACCOUNT_MODE_ENABLED +zxerr_t account_enabled(); +#endif + +#define APPROVE_LABEL_STAX "Sign transaction?" +#define REJECT_LABEL_STAX "Reject transaction" +#define CANCEL_LABEL "Cancel" +#define HOLD_TO_APPROVE_MSG "Hold to sign" + +static const char HOME_TEXT[] = "This application enables\nsigning transactions on the\n" MENU_MAIN_APP_LINE1 " network"; + +ux_state_t G_ux; +bolos_ux_params_t G_ux_params; +extern unsigned int review_type; + +const char *txn_intro_message = NULL; + +static nbgl_layoutTagValue_t pairs[NB_MAX_DISPLAYED_PAIRS_IN_REVIEW]; + +static nbgl_layoutTagValue_t pair; +static nbgl_layoutTagValueList_t pairList; +static nbgl_pageInfoLongPress_t infoLongPress; + +static nbgl_layoutSwitch_t settings[4]; + +typedef enum { + EXPERT_MODE = 0, +#ifdef APP_ACCOUNT_MODE_ENABLED + ACCOUNT_MODE, +#endif +#ifdef APP_SECRET_MODE_ENABLED + SECRET_MODE, +#endif +} settings_list_e; + + +typedef enum { + EXPERT_MODE_TOKEN = FIRST_USER_TOKEN, + ACCOUNT_MODE_TOKEN, + SECRET_MODE_TOKEN, + REVIEW_ADDRESS_TOKEN, +} config_token_e; + +void app_quit(void) { + // exit app here + os_sched_exit(-1); +} + +static void h_reject_internal(void) { + h_reject(review_type); +} + +static void h_approve_internal(void) { + h_approve(review_type); +} + +static void view_idle_show_impl_callback() { + view_idle_show_impl(0, NULL); +} + +static const char* const INFO_KEYS[] = {"Version", "License"}; +static const char* const INFO_VALUES[] = {APPVERSION, "Apache 2.0"}; + +static const char* txn_choice_message = "Reject transaction?"; +static const char* add_choice_message = "Reject address?"; +static const char* ui_choice_message = "Reject configuration?"; + +static const char* txn_verified = "TRANSACTION\nSIGNED"; +static const char* txn_cancelled = "Transaction rejected"; + +static const char* add_verified = "ADDRESS\nVERIFIED"; +static const char* add_cancelled = "Address verification\ncancelled"; + +static void h_expert_toggle() { + app_mode_set_expert(!app_mode_expert()); +} + +static void confirm_error(__Z_UNUSED bool confirm) { + h_error_accept(0); +} + +static void h_view_address() { + handleMenuShowAddress(); +} + +static void confirm_callback(bool confirm) { + const char* message = NULL; + switch (review_type) { + case REVIEW_ADDRESS: + message = confirm ? add_verified : add_cancelled; + break; + + case REVIEW_TXN: + message = confirm ? txn_verified : txn_cancelled; + break; + + case REVIEW_UI: + default: + confirm ? h_approve(review_type) : h_reject(review_type); + return; + } + nbgl_useCaseStatus(message, confirm, (confirm ? h_approve_internal : h_reject_internal)); +} + +static void cancel(void) { + ZEMU_LOGF(50, "Cancelling...\n") + confirm_callback(false); +} + +static void action_callback(bool confirm) { + ZEMU_LOGF(50, "Check action callback: %d\n", confirm) + if (confirm) { + confirm_callback(confirm); + return; + } + + const char* message = NULL; + switch (review_type) { + case REVIEW_UI: + message = ui_choice_message; + break; + + case REVIEW_ADDRESS: + message = add_choice_message; + break; + + case REVIEW_TXN: + message = txn_choice_message; + break; + + default: + ZEMU_LOGF(50, "Error unrecognize review option\n") + view_error_show(); + return; + } + + nbgl_useCaseConfirm(message, + NULL, + "Yes, reject", + "Go back", + cancel); +} + +static void check_cancel(void) { + action_callback(false); +} + +static void confirm_setting(bool confirm) { + if (confirm && viewdata.viewfuncAccept != NULL) { + viewdata.viewfuncAccept(); + return; + } + confirm_callback(confirm); +} + +void view_error_show() { + viewdata.key = viewdata.keys[0]; + viewdata.value = viewdata.values[0]; + MEMZERO(viewdata.key, MAX_CHARS_PER_KEY_LINE); + MEMZERO(viewdata.value, MAX_CHARS_PER_VALUE1_LINE); + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "ERROR"); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "SHOWING DATA"); + view_error_show_impl(); +} + +void view_custom_error_show(const char *upper, const char *lower) { + viewdata.key = viewdata.keys[0]; + viewdata.value = viewdata.values[0]; + MEMZERO(viewdata.key, MAX_CHARS_PER_KEY_LINE); + MEMZERO(viewdata.value, MAX_CHARS_PER_VALUE1_LINE); + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", upper); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", lower); + + nbgl_useCaseChoice(&C_round_warning_64px, viewdata.key, viewdata.value, "Ok", "", confirm_error); +} + +void view_error_show_impl() { + nbgl_useCaseChoice(&C_round_warning_64px, viewdata.key, viewdata.value, "Ok", NULL, confirm_setting); +} + +static uint8_t get_pair_number() { + uint8_t numItems = 0; + uint8_t numPairs = 0; + viewdata.viewfuncGetNumItems(&numItems); + for (uint8_t i = 0; i < numItems; i++) { + viewdata.viewfuncGetItem( + i, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + 0, &viewdata.pageCount); + numPairs += viewdata.pageCount; + } + return numPairs; +} + +zxerr_t h_review_update_data() { + if (viewdata.viewfuncGetNumItems == NULL) { + ZEMU_LOGF(50, "h_review_update_data - GetNumItems == NULL\n") + return zxerr_no_data; + } + if (viewdata.viewfuncGetItem == NULL) { + ZEMU_LOGF(50, "h_review_update_data - GetItems == NULL\n") + return zxerr_no_data; + } + + if (viewdata.viewfuncAccept == NULL) { + ZEMU_LOGF(50, "h_review_update_data - Function Accept == NULL\n") + return zxerr_no_data; + } + + if (viewdata.key == NULL || viewdata.value == NULL) { + return zxerr_unknown; + } + + CHECK_ZXERR(viewdata.viewfuncGetNumItems(&viewdata.itemCount)) + + uint8_t accPages = 0; + for (uint8_t i = 0; i < viewdata.itemCount; i++) { + CHECK_ZXERR(viewdata.viewfuncGetItem( + i, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + 0, &viewdata.pageCount)) + if (viewdata.pageCount == 0) { + ZEMU_LOGF(50, "pageCount is 0!") + return zxerr_no_data; + } + + if (accPages + viewdata.pageCount > viewdata.itemIdx) { + const uint8_t innerIdx = viewdata.itemIdx - accPages; + CHECK_ZXERR(viewdata.viewfuncGetItem( + i, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + innerIdx, &viewdata.pageCount)) + if (viewdata.pageCount > 1) { + const uint8_t titleLen = strnlen(viewdata.key, MAX_CHARS_PER_KEY_LINE); + snprintf(viewdata.key + titleLen, MAX_CHARS_PER_KEY_LINE - titleLen, " (%d/%d)", innerIdx + 1, viewdata.pageCount); + } + return zxerr_ok; + } + accPages += viewdata.pageCount; + } + + return zxerr_no_data; +} + +void h_review_update() { + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + case zxerr_no_data: + break; + default: + ZEMU_LOGF(50, "View error show\n") + view_error_show(); + break; + } +} + +static bool settings_screen_callback(uint8_t page, nbgl_pageContent_t* content) { + switch (page) + { + case 0: { + content->type = INFOS_LIST; + content->infosList.nbInfos = sizeof(INFO_KEYS)/sizeof(INFO_KEYS[0]); + content->infosList.infoContents = INFO_VALUES; + content->infosList.infoTypes = INFO_KEYS; + break; + } + + case 1: { + // Config + content->type = SWITCHES_LIST; + content->switchesList.nbSwitches = 1; + content->switchesList.switches = settings; + + settings[0].initState = app_mode_expert(); + settings[0].text = "Expert mode"; + settings[0].tuneId = TUNE_TAP_CASUAL; + settings[0].token = EXPERT_MODE_TOKEN; + +#ifdef APP_ACCOUNT_MODE_ENABLED + if (app_mode_expert() || app_mode_account()) { + settings[ACCOUNT_MODE].initState = app_mode_account(); + settings[ACCOUNT_MODE].text = "Crowdloan account"; + settings[ACCOUNT_MODE].tuneId = TUNE_TAP_CASUAL; + settings[ACCOUNT_MODE].token = ACCOUNT_MODE_TOKEN; + content->switchesList.nbSwitches++; + } +#endif + +#ifdef APP_SECRET_MODE_ENABLED + if (app_mode_expert() || app_mode_secret()) { + settings[SECRET_MODE].initState = app_mode_secret(); + settings[SECRET_MODE].text = "Secret mode"; + settings[SECRET_MODE].tuneId = TUNE_TAP_CASUAL; + settings[SECRET_MODE].token = SECRET_MODE_TOKEN; + content->switchesList.nbSwitches++; + } +#endif + break; + } + + case 2: { + content->type = INFO_BUTTON; + content->infoButton.text = "Show address"; + content->infoButton.icon = NULL; + content->infoButton.buttonText = "Review address"; + content->infoButton.buttonToken = REVIEW_ADDRESS_TOKEN; + break; + } + + default: + ZEMU_LOGF(50, "Incorrect settings page: %d\n", page) + return false; + } + + return true; +} + +static void settings_toggle_callback(int token, __Z_UNUSED uint8_t index) { + switch (token) { + case EXPERT_MODE_TOKEN: + h_expert_toggle(); + break; + +#ifdef APP_ACCOUNT_MODE_ENABLED + case ACCOUNT_MODE_TOKEN: + account_enabled(); + break; +#endif + +#ifdef APP_SECRET_MODE_ENABLED + case SECRET_MODE_TOKEN: + secret_enabled(); + break; +#endif + + case REVIEW_ADDRESS_TOKEN: + h_view_address(); + break; + + default: + ZEMU_LOGF(50, "Toggling setting not found\n") + break; + } +} + +void setting_screen() { + //Set return button top-left (true) botton-left (false) + const bool return_button_top_left = false; + const uint8_t init_page = 0; + const uint8_t settings_pages = 3; + nbgl_useCaseSettings(MENU_MAIN_APP_LINE1, init_page, settings_pages, return_button_top_left, + view_idle_show_impl_callback, settings_screen_callback, settings_toggle_callback); +} + +void view_idle_show_impl(__Z_UNUSED uint8_t item_idx, const char *statusString) { + viewdata.key = viewdata.keys[0]; + const char *home_text = HOME_TEXT; + if (statusString == NULL ) { +#ifdef APP_SECRET_MODE_ENABLED + if (app_mode_secret()) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", MENU_MAIN_APP_LINE2_SECRET); + home_text = viewdata.key; + } +#endif + } else { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", statusString); + } + const bool settings_icon = true; + nbgl_useCaseHome(MENU_MAIN_APP_LINE1, &C_icon_stax_64, home_text, settings_icon, setting_screen, app_quit); +} + +void view_message_impl(const char *title, const char *message) { + viewdata.value = viewdata.values[0]; + uint32_t titleLen = 0; + if (title != NULL) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", title); + titleLen = strnlen(title, MAX_CHARS_PER_VALUE1_LINE); + } + + if (message != NULL) { + const char sep = (titleLen > 0) ? 0x0A : 0x00; + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE - titleLen, "%c%s", sep, message); + } + + nbgl_useCaseSpinner(viewdata.value); +} + +static void review_configuration() { + viewdata.key = viewdata.keys[0]; + viewdata.value = viewdata.values[0]; + const zxerr_t err = h_review_update_data(); + if (err != zxerr_ok) { + ZEMU_LOGF(50, "Config screen error\n") + view_error_show(); + } + + nbgl_useCaseChoice(&C_round_warning_64px, viewdata.key, viewdata.value, "Accept", "Reject", confirm_setting); +} + +static void review_address() { + nbgl_layoutTagValueList_t* extraPagesPtr = NULL; + + uint8_t numItems = 0; + if (viewdata.viewfuncGetNumItems == NULL || + viewdata.viewfuncGetNumItems(&numItems) != zxerr_ok || + numItems > NB_MAX_DISPLAYED_PAIRS_IN_REVIEW) { + ZEMU_LOGF(50, "Show address error\n") + view_error_show(); + } + + for (uint8_t idx = 1; idx < numItems; idx++) { + pairs[idx - 1].item = viewdata.keys[idx]; + pairs[idx - 1].value = viewdata.values[idx]; + + viewdata.itemIdx = idx; + viewdata.key = viewdata.keys[idx]; + viewdata.value = viewdata.values[idx]; + h_review_update_data(); + + pairList.nbMaxLinesForValue = 0; + pairList.nbPairs = idx; + pairList.pairs = pairs; + extraPagesPtr = &pairList; + } + + viewdata.itemIdx = 0; + viewdata.key = viewdata.keys[0]; + viewdata.value = viewdata.values[0]; + h_review_update_data(); + + nbgl_useCaseAddressConfirmationExt(viewdata.value, action_callback, extraPagesPtr); +} + +static nbgl_layoutTagValue_t* update_item_callback(uint8_t index) { + uint8_t internalIndex = index % NB_MAX_DISPLAYED_PAIRS_IN_REVIEW; + + viewdata.itemIdx = index; + viewdata.key = viewdata.keys[internalIndex]; + viewdata.value = viewdata.values[internalIndex]; + + h_review_update_data(); + pair.item = viewdata.key; + pair.value = viewdata.value; + return &pair; +} + +static void review_transaction_static() { + if (viewdata.viewfuncGetNumItems == NULL) { + ZEMU_LOGF(50, "GetNumItems==NULL\n") + view_error_show(); + return; + } + + infoLongPress.icon = &C_icon_stax_64; + infoLongPress.text = APPROVE_LABEL_STAX; + infoLongPress.longPressText = HOLD_TO_APPROVE_MSG; + + pairList.nbMaxLinesForValue = NB_MAX_LINES_IN_REVIEW; + pairList.nbPairs = get_pair_number(); + pairList.pairs = NULL; // to indicate that callback should be used + pairList.callback = update_item_callback; + pairList.startIndex = 0; + + nbgl_useCaseStaticReview(&pairList, &infoLongPress, REJECT_LABEL_STAX, action_callback); +} + +void view_review_show_impl(unsigned int requireReply){ + review_type = (review_type_e) requireReply; + + // Retrieve intro text for transaction + txn_intro_message = NULL; + viewdata.key = viewdata.keys[0]; + viewdata.value = viewdata.values[0]; + if (viewdata.viewfuncGetItem != NULL) { + const zxerr_t err = viewdata.viewfuncGetItem(0xFF, viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + 0, &viewdata.pageCount); + if (err == zxerr_ok) { + txn_intro_message = viewdata.value; + } + } + h_paging_init(); + + switch (review_type) { + case REVIEW_UI: + nbgl_useCaseReviewStart(&C_icon_stax_64, + "Review configuration", + NULL, + CANCEL_LABEL, + review_configuration, + cancel); + break; + case REVIEW_ADDRESS: { + #if defined(CUSTOM_ADDRESS_TEXT) + const char ADDRESS_TEXT[] = CUSTOM_ADDRESS_TEXT; + #else + const char ADDRESS_TEXT[] = "Verify " MENU_MAIN_APP_LINE1 "\naddress"; + #endif + nbgl_useCaseReviewStart(&C_icon_stax_64, + ADDRESS_TEXT, + NULL, + CANCEL_LABEL, + review_address, + cancel); + break; + } + case REVIEW_TXN: + default: + nbgl_useCaseReviewStart(&C_icon_stax_64, + (txn_intro_message == NULL ? "Review transaction" : txn_intro_message), + NULL, + REJECT_LABEL_STAX, + review_transaction_static, + check_cancel); + } +} + +#endif diff --git a/deps/ledger-zxlib/app/ui/view_x.c b/deps/ledger-zxlib/app/ui/view_x.c new file mode 100644 index 00000000..29d96c60 --- /dev/null +++ b/deps/ledger-zxlib/app/ui/view_x.c @@ -0,0 +1,462 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax AG +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "bolos_target.h" + +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) + +#include "app_mode.h" +#include "view.h" +#include "view_internal.h" +#include "actions.h" +#include "apdu_codes.h" +#include "glyphs.h" +#include "bagl.h" +#include "zxmacros.h" +#include "view_templates.h" +#include "tx.h" +#include "view_nano.h" +#include "view_nano_inspect.h" +#include "menu_handler.h" + +#ifdef APP_SECRET_MODE_ENABLED +#include "secret.h" +#endif + + +#include +#include + +void account_enabled(); +void shortcut_enabled(); + +static void h_expert_toggle(); +static void h_expert_update(); +static void h_review_loop_start(); +static void h_review_loop_inside(); +static void h_review_loop_end(); +static void h_view_address(); + +#ifdef APP_SECRET_MODE_ENABLED +static void h_secret_click(); +#endif + +#ifdef APP_ACCOUNT_MODE_ENABLED +static void h_account_toggle(); +static void h_account_update(); +#endif + +#ifdef SHORTCUT_MODE_ENABLED +static void h_shortcut_toggle(); +static void h_shortcut_update(); +#endif + +static void h_shortcut(unsigned int); +static void run_ux_review_flow(review_type_e reviewType, const ux_flow_step_t* const start_step); +const ux_flow_step_t *ux_review_flow[MAX_REVIEW_UX_SCREENS]; + +#include "ux.h" +ux_state_t G_ux; +bolos_ux_params_t G_ux_params; +uint8_t flow_inside_loop; +extern unsigned int review_type; + + +UX_STEP_NOCB(ux_idle_flow_1_step, pbb, { &C_icon_app, MENU_MAIN_APP_LINE1, viewdata.key,}); +UX_STEP_CB_INIT(ux_idle_flow_2_step, bn, h_expert_update(), h_expert_toggle(), { "Expert mode:", viewdata.value, }); +UX_STEP_NOCB(ux_idle_flow_3_step, bn, { APPVERSION_LINE1, APPVERSION_LINE2, }); +UX_STEP_CB(ux_idle_flow_4_step, bn, h_view_address(), { "View", "address", }); + +#ifdef APP_SECRET_MODE_ENABLED +UX_STEP_CB(ux_idle_flow_5_step, bn, h_secret_click(), { "License:", "Apache 2.0", }); +#else +UX_STEP_NOCB(ux_idle_flow_5_step, bn, { "License:", "Apache 2.0", }); +#endif + +UX_STEP_CB(ux_idle_flow_6_step, pb, os_sched_exit(-1), { &C_icon_dashboard, "Quit",}); + +#ifdef APP_ACCOUNT_MODE_ENABLED +UX_STEP_CB_INIT(ux_idle_flow_7_step, bn, h_account_update(), h_account_toggle(), { "Account:", viewdata.value, }); +#endif + +#ifdef SHORTCUT_MODE_ENABLED +UX_STEP_CB_INIT(ux_idle_flow_8_step, bn, h_shortcut_update(), h_shortcut_toggle(), { "Shortcut mode:", viewdata.value, }); +#endif + +const ux_flow_step_t *const ux_idle_flow [] = { + &ux_idle_flow_1_step, + &ux_idle_flow_2_step, +#ifdef APP_ACCOUNT_MODE_ENABLED + &ux_idle_flow_7_step, +#endif +#ifdef SHORTCUT_MODE_ENABLED + &ux_idle_flow_8_step, +#endif + &ux_idle_flow_3_step, + &ux_idle_flow_4_step, + &ux_idle_flow_5_step, + &ux_idle_flow_6_step, + FLOW_END_STEP, +}; + +/////////// +UX_STEP_CB_INIT(ux_menu_init_flow_2_step, bn, NULL, h_initialize(), { "Click to", "Initialize", }); +UX_STEP_NOCB(ux_menu_init_flow_4_step, bn, { "Developed by:", "Zondax.ch", }); + +const ux_flow_step_t *const ux_menu_initialize [] = { + &ux_idle_flow_1_step, + &ux_menu_init_flow_2_step, + &ux_idle_flow_3_step, + &ux_menu_init_flow_4_step, + &ux_idle_flow_5_step, + &ux_idle_flow_6_step, + + FLOW_END_STEP, +}; + +/////////// + +UX_STEP_NOCB(ux_message_flow_1_step, pbb, { &C_icon_app, viewdata.key, viewdata.value,}); + +UX_FLOW( + ux_message_flow, + &ux_message_flow_1_step +); + +/////////// + +UX_STEP_NOCB(ux_error_flow_1_step, bnnn_paging, { .title = viewdata.key, .text = viewdata.value, }); +UX_STEP_VALID(ux_error_flow_2_step, pb, h_error_accept(0), { &C_icon_validate_14, "Ok"}); + +UX_FLOW( + ux_error_flow, + &ux_error_flow_1_step, + &ux_error_flow_2_step +); + +/////////// + +UX_STEP_NOCB(ux_custom_error_flow_1_step, pbb, { &C_icon_warning, viewdata.key, viewdata.value,}); +UX_STEP_VALID(ux_custom_error_flow_2_step, pb, h_error_accept(0), { &C_icon_validate_14, "Ok"}); + +UX_FLOW( + ux_custom_error_flow, + &ux_custom_error_flow_1_step, + &ux_custom_error_flow_2_step +); + +/////////// + +UX_FLOW_DEF_NOCB(ux_review_flow_1_review_title, pbb, { &C_icon_app, REVIEW_SCREEN_TITLE, REVIEW_SCREEN_TXN_VALUE,}); +UX_FLOW_DEF_NOCB(ux_review_flow_2_review_title, pbb, { &C_icon_app, REVIEW_SCREEN_TITLE, REVIEW_SCREEN_ADDR_VALUE,}); +UX_FLOW_DEF_NOCB(ux_review_flow_3_review_title, pbb, { &C_icon_app, "Review", "configuration",}); + +UX_STEP_INIT(ux_review_flow_2_start_step, NULL, NULL, { h_review_loop_start(); }); +#ifdef HAVE_INSPECT +UX_STEP_CB_INIT(ux_review_flow_2_step, bnnn_paging, h_review_loop_inside(), inspect_init(), { .title = viewdata.key, .text = viewdata.value, }); +#else +UX_STEP_NOCB_INIT(ux_review_flow_2_step, bnnn_paging, { h_review_loop_inside(); }, { .title = viewdata.key, .text = viewdata.value, }); +#endif +UX_STEP_INIT(ux_review_flow_2_end_step, NULL, NULL, { h_review_loop_end(); }); +UX_STEP_VALID(ux_review_flow_3_step, pb, h_approve(0), { &C_icon_validate_14, APPROVE_LABEL }); +UX_STEP_VALID(ux_review_flow_4_step, pb, h_reject(review_type), { &C_icon_crossmark, REJECT_LABEL }); + +UX_STEP_CB_INIT(ux_review_flow_5_step, pb, NULL, h_shortcut(0), { &C_icon_eye, SHORTCUT_STR }); + +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// + +void h_review_update() { + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + case zxerr_no_data: + break; + default: + view_error_show(); + break; + } +} + +void h_review_loop_start() { + if (flow_inside_loop) { + // coming from right + + if (!h_paging_can_decrease()) { + // exit to the left + flow_inside_loop = 0; + ux_flow_prev(); + return; + } + + h_paging_decrease(); + } else { + // coming from left + h_paging_init(); + } + + h_review_update(); + + ux_flow_next(); +} + +void h_review_loop_inside() { + flow_inside_loop = 1; +} + +void h_review_loop_end() { + if (flow_inside_loop) { + // coming from left + h_paging_increase(); + zxerr_t err = h_review_update_data(); + + switch(err) { + case zxerr_ok: + ux_layout_bnnn_paging_reset(); + break; + case zxerr_no_data: { + flow_inside_loop = 0; + ux_flow_next(); + return; + } + default: + view_error_show(); + break; + } + } else { + // coming from right + h_paging_decrease(); + h_review_update(); + } + + // move to prev flow but trick paging to show first page + CUR_FLOW.prev_index = CUR_FLOW.index-2; + CUR_FLOW.index--; + ux_flow_relayout(); +} + +void splitValueField() { + uint16_t vlen = strlen(viewdata.value); + if (vlen == 0 ) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, " "); + } +} + +void splitValueAddress() { + splitValueField(); +} + +max_char_display get_max_char_per_line() { + return MAX_CHARS_PER_VALUE1_LINE; +} + +void h_expert_toggle() { + app_mode_set_expert(!app_mode_expert()); + ux_flow_init(0, ux_idle_flow, &ux_idle_flow_2_step); +} + +void h_expert_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "disabled"); + if (app_mode_expert()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "enabled"); + } +} + +#ifdef APP_ACCOUNT_MODE_ENABLED +void h_account_toggle() { + if(app_mode_expert()) { + account_enabled(); + } else { + ux_flow_init(0, ux_idle_flow, &ux_idle_flow_7_step); + } +} + +void h_account_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, ACCOUNT_DEFAULT); + if (app_mode_account()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, ACCOUNT_SECONDARY); + } +} +#endif + +#ifdef SHORTCUT_MODE_ENABLED +void h_shortcut_toggle() { + if (app_mode_expert() && !app_mode_shortcut()) { + shortcut_enabled(); + return; + } + app_mode_set_shortcut(0); + ux_flow_init(0, ux_idle_flow, &ux_idle_flow_8_step); +} + +void h_shortcut_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "disabled"); + if (app_mode_shortcut()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "enabled"); + } +} +#endif + +#ifdef APP_SECRET_MODE_ENABLED +void h_secret_click() { + if (COIN_SECRET_REQUIRED_CLICKS == 0) { + // There is no secret mode + return; + } + + viewdata.secret_click_count++; + + char buffer[50]; + snprintf(buffer, sizeof(buffer), "secret click %d\n", viewdata.secret_click_count); + zemu_log(buffer); + + if (viewdata.secret_click_count >= COIN_SECRET_REQUIRED_CLICKS) { + secret_enabled(); + viewdata.secret_click_count = 0; + return; + } + + ux_flow_init(0, ux_idle_flow, &ux_idle_flow_4_step); +} +#endif + +static void h_shortcut(__Z_UNUSED unsigned int _) { + run_ux_review_flow(REVIEW_TXN, &ux_review_flow_3_step); +} + +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// + +void view_idle_show_impl(__Z_UNUSED uint8_t item_idx, const char *statusString) { + if (statusString == NULL ) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", MENU_MAIN_APP_LINE2); +#ifdef APP_SECRET_MODE_ENABLED + if (app_mode_secret()) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", MENU_MAIN_APP_LINE2_SECRET); + } +#endif + } else { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", statusString); + } + + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_idle_flow, NULL); +} + +void view_initialize_show_impl(__Z_UNUSED uint8_t item_idx, const char *statusString) { + if (statusString == NULL ) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", "Not Ready"); + } else { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", statusString); + } + + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_menu_initialize, NULL); +} + +void view_review_show_impl(unsigned int requireReply){ + review_type = requireReply; + h_paging_init(); + h_paging_decrease(); + //// + flow_inside_loop = 0; + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + + run_ux_review_flow((review_type_e)review_type, NULL); +} + +void run_root_txn_flow() { + run_ux_review_flow(review_type, &ux_review_flow_2_start_step); +} + +// Build review UX flow and run it +void run_ux_review_flow(review_type_e reviewType, const ux_flow_step_t* const start_step) { + uint8_t index = 0; + + switch (reviewType) + { + case REVIEW_UI: + ux_review_flow[index++] = &ux_review_flow_3_review_title; + break; + + case REVIEW_ADDRESS: + ux_review_flow[index++] = &ux_review_flow_2_review_title; + break; + + case REVIEW_TXN: + default: + ux_review_flow[index++] = &ux_review_flow_1_review_title; + if(app_mode_shortcut()) { + ux_review_flow[index++] = &ux_review_flow_5_step; + } + break; + } + + ux_review_flow[index++] = &ux_review_flow_2_start_step; + ux_review_flow[index++] = &ux_review_flow_2_step; + ux_review_flow[index++] = &ux_review_flow_2_end_step; + ux_review_flow[index++] = &ux_review_flow_3_step; + ux_review_flow[index++] = &ux_review_flow_4_step; + ux_review_flow[index++] = FLOW_END_STEP; + + ux_flow_init(0, ux_review_flow, start_step); +} + +void view_message_impl(const char *title, const char *message) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", title); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", message); + ux_layout_bnnn_paging_reset(); + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_message_flow, NULL); +} + +void view_error_show_impl() { + ux_layout_bnnn_paging_reset(); + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_error_flow, NULL); +} + +void view_custom_error_show_impl() { + ux_layout_bnnn_paging_reset(); + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_custom_error_flow, NULL); +} + +static void h_view_address() { + handleMenuShowAddress(); +// view_review_show_impl(); +} + +#endif diff --git a/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt new file mode 100644 index 00000000..c64d5d8f --- /dev/null +++ b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt @@ -0,0 +1,31 @@ +############################## +# Google Test +# Based on instructions in https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project +# Download and unpack googletest at configure time +configure_file(CMakeLists.txt.gtest.in ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt) + +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) +if (result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") +endif () + +execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) +if (result) + message(FATAL_ERROR "Build step for googletest failed: ${result}") +endif () + +# Prevent overriding the parent project's compiler/linker settings on Windows +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + +add_subdirectory( + ${CMAKE_BINARY_DIR}/googletest-src + ${CMAKE_BINARY_DIR}/googletest-build +) + +if (CMAKE_VERSION VERSION_LESS 3.0.0) + include_directories("${gtest_SOURCE_DIR}/include") +endif () diff --git a/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt.gtest.in b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt.gtest.in new file mode 100644 index 00000000..b30f8be0 --- /dev/null +++ b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt.gtest.in @@ -0,0 +1,16 @@ +# Based on https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project +cmake_minimum_required(VERSION 3.0.0) + +project(googletest-download NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.11.0 + SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) diff --git a/deps/ledger-zxlib/dockerized_build.mk b/deps/ledger-zxlib/dockerized_build.mk new file mode 100644 index 00000000..0046e69c --- /dev/null +++ b/deps/ledger-zxlib/dockerized_build.mk @@ -0,0 +1,328 @@ +#******************************************************************************* +#* (c) 2018 - 2023 Zondax AG +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +.PHONY: all deps build clean load delete check_python show_info_recovery_mode + +TESTS_ZEMU_DIR?=$(CURDIR)/tests_zemu +EXAMPLE_VUE_DIR?=$(CURDIR)/example_vue +TESTS_JS_PACKAGE?= +TESTS_JS_DIR?= + +LEDGER_SRC=$(CURDIR)/app +DOCKER_APP_SRC=/app +DOCKER_APP_BIN=$(DOCKER_APP_SRC)/app/bin/app.elf + +DOCKER_BOLOS_SDKS = NANOS_SDK +DOCKER_BOLOS_SDKX = NANOX_SDK +DOCKER_BOLOS_SDKS2 = NANOSP_SDK +DOCKER_BOLOS_SDKST = STAX_SDK + +TARGET_S = nanos +TARGET_X = nanox +TARGET_S2 = nanos2 +TARGET_ST = stax + +# Note: This is not an SSH key, and being public represents no risk +SCP_PUBKEY=049bc79d139c70c83a4b19e8922e5ee3e0080bb14a2e8b0752aa42cda90a1463f689b0fa68c1c0246845c2074787b649d0d8a6c0b97d4607065eee3057bdf16b83 +SCP_PRIVKEY=ff701d781f43ce106f72dc26a46b6a83e053b5d07bb3d4ceab79c91ca822a66b + +INTERACTIVE:=$(shell [ -t 0 ] && echo 1) +USERID:=$(shell id -u) +GROUPID:=$(shell id -g) +$(info USERID : $(USERID)) +$(info GROUPID : $(GROUPID)) +$(info TESTS_ZEMU_DIR : $(TESTS_ZEMU_DIR)) +$(info EXAMPLE_VUE_DIR : $(EXAMPLE_VUE_DIR)) +$(info TESTS_JS_DIR : $(TESTS_JS_DIR)) +$(info TESTS_JS_PACKAGE : $(TESTS_JS_PACKAGE)) + +DOCKER_IMAGE_ZONDAX=zondax/ledger-app-builder:ledger-d5bfe2e793f15a826971ae9de2adcad524df3e8e +DOCKER_IMAGE_LEDGER=ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest + +ifdef INTERACTIVE +INTERACTIVE_SETTING:="-i" +TTY_SETTING:="-t" +else +INTERACTIVE_SETTING:= +TTY_SETTING:= +endif + +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Linux) + NPROC=$(shell nproc) +endif +ifeq ($(UNAME_S),Darwin) + NPROC=$(shell sysctl -n hw.physicalcpu) +endif + +define run_docker + docker run $(TTY_SETTING) $(INTERACTIVE_SETTING) --rm \ + -e SCP_PRIVKEY=$(SCP_PRIVKEY) \ + -e SDK_VARNAME=$(1) \ + -e TARGET=$(2) \ + -u $(USERID):$(GROUPID) \ + -v $(shell realpath .):/app \ + -e SUPPORT_SR25519=$(SUPPORT_SR25519) \ + -e SUBSTRATE_PARSER_FULL=$(SUBSTRATE_PARSER_FULL) \ + -e DISABLE_PREVIOUS=$(DISABLE_PREVIOUS) \ + -e DISABLE_CURRENT=$(DISABLE_CURRENT) \ + -e COIN=$(COIN) \ + -e APP_TESTING=$(APP_TESTING) \ + $(DOCKER_IMAGE_ZONDAX) "$(3)" +endef + +define run_docker_ledger + docker run $(TTY_SETTING) $(INTERACTIVE_SETTING) --rm \ + -v $(shell pwd):/app \ + $(DOCKER_IMAGE_LEDGER) "$(1)" +endef + +all: + @$(MAKE) clean + @$(MAKE) buildS + @$(MAKE) buildX + @$(MAKE) buildS2 +ifdef ZXLIB_COMPILE_STAX + @$(MAKE) buildST +endif # ZXLIB_COMPILE_STAX + +.PHONY: check_python +check_python: + @python -c 'import sys; sys.exit(3-sys.version_info.major)' || (echo "The python command does not point to Python 3"; exit 1) + +.PHONY: deps +deps: check_python + @echo "Install dependencies" + $(CURDIR)/deps/ledger-zxlib/scripts/install_deps.sh + +.PHONY: pull +pull: + docker pull $(DOCKER_IMAGE_ZONDAX) + docker pull $(DOCKER_IMAGE_LEDGER) + +.PHONY: ledger_lint +ledger_lint: + $(call run_docker_ledger,"scan-build --use-cc=clang -analyze-headers -enable-checker security -enable-checker unix -enable-checker valist -o scan-build --status-bugs make default") + +.PHONY: build_rustS +build_rustS: + $(call run_docker,$(DOCKER_BOLOS_SDKS),$(TARGET_S),make -j $(NPROC) rust) + +.PHONY: build_rustX +build_rustX: + $(call run_docker,$(DOCKER_BOLOS_SDKX),$(TARGET_X),make -j $(NPROC) rust) + +.PHONY: build_rustS2 +build_rustS2: + $(call run_docker,$(DOCKER_BOLOS_SDKS2),$(TARGET_S2),make -j $(NPROC) rust) + +.PHONY: build_rustST +build_rustST: + $(call run_docker,$(DOCKER_BOLOS_SDKST),$(TARGET_ST),make -j $(NPROC) rust) + +.PHONY: convert_icon +convert_icon: + @convert $(LEDGER_SRC)/tmp.gif -monochrome -size 16x16 -depth 1 $(LEDGER_SRC)/nanos_icon.gif + @convert $(LEDGER_SRC)/nanos_icon.gif -crop 14x14+1+1 +repage -negate $(LEDGER_SRC)/nanox_icon.gif + +.PHONY: buildS +buildS: + $(call run_docker,$(DOCKER_BOLOS_SDKS),$(TARGET_S),make -j $(NPROC)) + +.PHONY: buildX +buildX: + $(call run_docker,$(DOCKER_BOLOS_SDKX),$(TARGET_X),make -j $(NPROC)) + +.PHONY: buildS2 +buildS2: + $(call run_docker,$(DOCKER_BOLOS_SDKS2),$(TARGET_S2),make -j $(NPROC)) + +.PHONY: buildST +buildST: + $(call run_docker,$(DOCKER_BOLOS_SDKST),$(TARGET_ST),make -j $(NPROC)) + +.PHONY: clean_output +clean_output: + @echo "Removing output files" + @rm -f app/output/app* || true + +.PHONY: clean_build +clean_build: + $(call run_docker,$(DOCKER_BOLOS_SDKS2),$(TARGET_S2),make clean) + +.PHONY: clean +clean: clean_output clean_build + +.PHONY: listvariants +listvariants: + $(call run_docker,$(DOCKER_BOLOS_SDKS2),$(TARGET_S2),make listvariants) + +.PHONY: shellS +shellS: + $(call run_docker,$(DOCKER_BOLOS_SDKS) -t,$(TARGET_S),bash) + +.PHONY: shellX +shellX: + $(call run_docker,$(DOCKER_BOLOS_SDKX) -t,$(TARGET_X),bash) + +.PHONY: shellS2 +shellS2: + $(call run_docker,$(DOCKER_BOLOS_SDKS2) -t,$(TARGET_S2),bash) + +.PHONY: loadS +loadS: + ${LEDGER_SRC}/pkg/installer_s.sh load + +.PHONY: deleteS +deleteS: + ${LEDGER_SRC}/pkg/installer_s.sh delete + +.PHONY: loadS2 +loadS2: + ${LEDGER_SRC}/pkg/installer_s2.sh load + +.PHONY: deleteS2 +deleteS2: + ${LEDGER_SRC}/pkg/installer_s2.sh delete + +.PHONY: loadST +loadST: + ${LEDGER_SRC}/pkg/installer_stax.sh load + +.PHONY: deleteST +deleteST: + ${LEDGER_SRC}/pkg/installer_stax.sh delete + +.PHONY: sizeS +sizeS: + $(CURDIR)/deps/ledger-zxlib/scripts/getSize.py nanos + +.PHONY: sizeS2 +sizeS2: + $(CURDIR)/deps/ledger-zxlib/scripts/getSize.py nanos2 + +.PHONY: sizeX +sizeX: + $(CURDIR)/deps/ledger-zxlib/scripts/getSize.py nanox + +.PHONY: sizeST +sizeST: + $(CURDIR)/deps/ledger-zxlib/scripts/getSize.py stax + +.PHONY: show_info_recovery_mode +show_info_recovery_mode: + @echo "This command requires a Ledger Nano S in recovery mode. To go into recovery mode, follow:" + @echo " 1. Settings -> Device -> Reset all and confirm" + @echo " 2. Unplug device, press and hold the right button, plug-in again" + @echo " 3. Navigate to the main menu" + @echo "If everything was correct, no PIN needs to be entered." + +# This target will initialize the device with the integration testing mnemonic +.PHONY: dev_init +dev_init: show_info_recovery_mode + @echo "Initializing device with test mnemonic! WARNING TAKES 2 MINUTES AND REQUIRES RECOVERY MODE" + @python -m ledgerblue.hostOnboard --apdu --id 0 --prefix "" --passphrase "" --pin 5555 --words "equip will roof matter pink blind book anxiety banner elbow sun young" + +# This target will initialize the device with the secondary integration testing mnemonic (Bob) +.PHONY: dev_init_secondary +dev_init_secondary: check_python show_info_recovery_mode + @echo "Initializing device with secondary test mnemonic! WARNING TAKES 2 MINUTES AND REQUIRES RECOVERY MODE" + @python -m ledgerblue.hostOnboard --apdu --id 0 --prefix "" --passphrase "" --pin 5555 --words "elite vote proof agree february step sibling sand grocery axis false cup" + +# This target will setup a custom developer certificate +.PHONY: dev_ca +dev_ca: check_python + @python -m ledgerblue.setupCustomCA --targetId 0x31100004 --public $(SCP_PUBKEY) --name zondax + +.PHONY: dev_ca_delete +dev_ca_delete: check_python + @python -m ledgerblue.resetCustomCA --targetId 0x31100004 + +# This target will setup a custom developer certificate +.PHONY: dev_caS2 +dev_caS2: check_python + @python -m ledgerblue.setupCustomCA --targetId 0x33100004 --public $(SCP_PUBKEY) --name zondax + +.PHONY: dev_ca_deleteS2 +dev_ca_deleteS2: check_python + @python -m ledgerblue.resetCustomCA --targetId 0x33100004 + +.PHONY: zemu_install_js_link +ifeq ($(TESTS_JS_DIR),) +zemu_install_js_link: + @echo "No local package defined" +else +zemu_install_js_link: + # First unlink everything + cd $(TESTS_JS_DIR) && yarn unlink || true + cd $(TESTS_ZEMU_DIR) && yarn unlink $(TESTS_JS_PACKAGE) || true + # Now build and link + cd $(TESTS_JS_DIR) && yarn install && yarn build && yarn link || true + cd $(TESTS_ZEMU_DIR) && yarn link $(TESTS_JS_PACKAGE) && yarn install || true + @echo + # List linked packages + @echo + @cd $(TESTS_ZEMU_DIR) && ( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l || true + @echo +endif + +.PHONY: zemu_install +zemu_install: zemu_install_js_link + # and now install everything + cd $(TESTS_ZEMU_DIR) && yarn install + +.PHONY: zemu +zemu: + cd $(TESTS_ZEMU_DIR)/tools && node debug.mjs $(COIN) + +.PHONY: zemu_val +zemu_val: + cd $(TESTS_ZEMU_DIR)/tools && node debug_val.mjs + +.PHONY: zemu_debug +zemu_debug: + cd $(TESTS_ZEMU_DIR)/tools && node debug.mjs $(COIN) debug + +########################## TEST Section ############################### + +.PHONY: zemu_test +zemu_test: + cd $(TESTS_ZEMU_DIR) && yarn test$(COIN) + +.PHONY: rust_test +rust_test: + cd app/rust && cargo test + +.PHONY: cpp_test +cpp_test: + mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make + cd build && GTEST_COLOR=1 ASAN_OPTIONS=detect_leaks=0 ctest -VV + +########################## FUZZING Section ############################### + +.PHONY: fuzz_build +fuzz_build: + cmake -B build -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DCMAKE_BUILD_TYPE=Debug -DENABLE_FUZZING=1 -DENABLE_SANITIZERS=1 . + make -C build + +.PHONY: fuzz +fuzz: fuzz_build + ./fuzz/run-fuzzers.py + +.PHONY: fuzz_crash +fuzz_crash: FUZZ_LOGGING=1 +fuzz_crash: fuzz_build + ./fuzz/run-fuzz-crashes.py diff --git a/deps/ledger-zxlib/include/apdu_codes.h b/deps/ledger-zxlib/include/apdu_codes.h new file mode 100644 index 00000000..5f552651 --- /dev/null +++ b/deps/ledger-zxlib/include/apdu_codes.h @@ -0,0 +1,50 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#include "inttypes.h" +#include "zxmacros.h" + +// Based on ISO7816 + +#define APDU_CODE_OK 0x9000 +#define APDU_CODE_BUSY 0x9001 + +#define APDU_CODE_EXECUTION_ERROR 0x6400 + +#define APDU_CODE_WRONG_LENGTH 0x6700 + +#define APDU_CODE_EMPTY_BUFFER 0x6982 +#define APDU_CODE_OUTPUT_BUFFER_TOO_SMALL 0x6983 +#define APDU_CODE_DATA_INVALID 0x6984 +#define APDU_CODE_CONDITIONS_NOT_SATISFIED 0x6985 +#define APDU_CODE_COMMAND_NOT_ALLOWED 0x6986 +#define APDU_CODE_TX_NOT_INITIALIZED 0x6987 + +#define APDU_CODE_BAD_KEY_HANDLE 0x6A80 +#define APDU_CODE_INVALIDP1P2 0x6B00 +#define APDU_CODE_INS_NOT_SUPPORTED 0x6D00 +#define APDU_CODE_CLA_NOT_SUPPORTED 0x6E00 + +#define APDU_CODE_UNKNOWN 0x6F00 +#define APDU_CODE_SIGN_VERIFY_ERROR 0x6F01 + + +__Z_INLINE void set_code(uint8_t *buffer, uint8_t offset, uint16_t value) { + *(buffer + offset) = (uint8_t) (value >> 8); + *(buffer + offset + 1) = (uint8_t) (value & 0xFF); +} diff --git a/deps/ledger-zxlib/include/app_mode.h b/deps/ledger-zxlib/include/app_mode.h new file mode 100644 index 00000000..b6722ebd --- /dev/null +++ b/deps/ledger-zxlib/include/app_mode.h @@ -0,0 +1,45 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once +#include "zxmacros.h" +#include "stdbool.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void app_mode_reset(); + +bool app_mode_expert(); + +void app_mode_set_expert(uint8_t val); + +bool app_mode_account(); + +void app_mode_set_account(uint8_t val); + +bool app_mode_secret(); + +void app_mode_set_secret(uint8_t val); + +bool app_mode_shortcut(); + +void app_mode_set_shortcut(uint8_t val); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/base64.h b/deps/ledger-zxlib/include/base64.h new file mode 100644 index 00000000..99bc7c0a --- /dev/null +++ b/deps/ledger-zxlib/include/base64.h @@ -0,0 +1,29 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +uint16_t base64_encode(char *out, uint16_t outlen, const uint8_t *in, uint16_t inlen); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/bech32.h b/deps/ledger-zxlib/include/bech32.h new file mode 100644 index 00000000..a1c42245 --- /dev/null +++ b/deps/ledger-zxlib/include/bech32.h @@ -0,0 +1,41 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "zxerror.h" +#include "segwit_addr.h" + +#define MAX_INPUT_SIZE 64 + +// the following function encodes directly from bytes +// it will internally convert from 8 to 5 bits and return a +// zero-terminated string in output + +zxerr_t bech32EncodeFromBytes(char *out, + size_t out_len, + const char *hrp, + const uint8_t *in, + size_t in_len, + uint8_t pad, + bech32_encoding enc); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/bignum.h b/deps/ledger-zxlib/include/bignum.h new file mode 100644 index 00000000..9bf31f8f --- /dev/null +++ b/deps/ledger-zxlib/include/bignum.h @@ -0,0 +1,35 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +bool_t bignumLittleEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, const uint8_t *inBCD, uint16_t inBCDLen); +void bignumLittleEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, const uint8_t *binValue, uint16_t binValueLen); + +bool_t bignumBigEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, const uint8_t *bcdIn, uint16_t bcdInLen); +void bignumBigEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, const uint8_t *binValue, uint16_t binValueLen); + + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/bittools.h b/deps/ledger-zxlib/include/bittools.h new file mode 100644 index 00000000..1903878d --- /dev/null +++ b/deps/ledger-zxlib/include/bittools.h @@ -0,0 +1,37 @@ +// This code has been adapted from: +/* Copyright (c) 2017 Pieter Wuille + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +int convert_bits(uint8_t *out, + size_t *outlen, + int outBits, + const uint8_t *in, + size_t inLen, + int inBits, int pad); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/buffering.h b/deps/ledger-zxlib/include/buffering.h new file mode 100644 index 00000000..94a1b605 --- /dev/null +++ b/deps/ledger-zxlib/include/buffering.h @@ -0,0 +1,67 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef struct { + uint8_t *data; + uint16_t size; + uint16_t pos; + uint8_t in_use: 1; +} buffer_state_t; + +/// Initialize buffer +/// \param ram_buffer +/// \param ram_buffer_size +/// \param flash_buffer +/// \param flash_buffer_size +void buffering_init(uint8_t *ram_buffer, + uint16_t ram_buffer_size, + uint8_t *flash_buffer, + uint16_t flash_buffer_size); + +/// Reset buffer +void buffering_reset(); + +/// Append data to the buffer +/// \param data +/// \param length +/// \return the number of appended bytes +uint32_t buffering_append(uint8_t *data, uint32_t length); + +/// buffering_get_ram_buffer +/// \return +buffer_state_t *buffering_get_ram_buffer(); + +/// buffering_get_flash_buffer +/// \return +buffer_state_t *buffering_get_flash_buffer(); + +/// buffering_get_buffer +/// \return +buffer_state_t *buffering_get_buffer(); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/hexutils.h b/deps/ledger-zxlib/include/hexutils.h new file mode 100644 index 00000000..3cbaad8e --- /dev/null +++ b/deps/ledger-zxlib/include/hexutils.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +size_t parseHexString(uint8_t *out, uint16_t outLen, const char *input); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/segwit_addr.h b/deps/ledger-zxlib/include/segwit_addr.h new file mode 100644 index 00000000..1683b625 --- /dev/null +++ b/deps/ledger-zxlib/include/segwit_addr.h @@ -0,0 +1,117 @@ +/* Copyright (c) 2017 Pieter Wuille + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef _SEGWIT_ADDR_H_ +#define _SEGWIT_ADDR_H_ 1 + +#include +#include + +/** Encode a SegWit address + * + * Out: output: Pointer to a buffer of size 73 + strlen(hrp) that will be + * updated to contain the null-terminated address. + * In: hrp: Pointer to the null-terminated human readable part to use + * (chain/network specific). + * ver: Version of the witness program (between 0 and 16 inclusive). + * prog: Data bytes for the witness program (between 2 and 40 bytes). + * prog_len: Number of data bytes in prog. + * Returns 1 if successful. + */ +int segwit_addr_encode( + char *output, + const char *hrp, + int ver, + const uint8_t *prog, + size_t prog_len +); + +/** Decode a SegWit address + * + * Out: ver: Pointer to an int that will be updated to contain the witness + * program version (between 0 and 16 inclusive). + * prog: Pointer to a buffer of size 40 that will be updated to + * contain the witness program bytes. + * prog_len: Pointer to a size_t that will be updated to contain the length + * of bytes in prog. + * hrp: Pointer to the null-terminated human readable part that is + * expected (chain/network specific). + * addr: Pointer to the null-terminated address. + * Returns 1 if successful. + */ +int segwit_addr_decode( + int *ver, + uint8_t *prog, + size_t *prog_len, + const char *hrp, + const char *addr +); + +/** Supported encodings. */ +typedef enum { + BECH32_ENCODING_NONE, + BECH32_ENCODING_BECH32, + BECH32_ENCODING_BECH32M +} bech32_encoding; + +#define BECH32M_CONST 0x2bc830a3 +#define BECH32_CONST 1 + +/** Encode a Bech32 or Bech32m string + * + * Out: output: Pointer to a buffer of size strlen(hrp) + data_len + 8 that + * will be updated to contain the null-terminated Bech32 string. + * In: hrp : Pointer to the null-terminated human readable part. + * data : Pointer to an array of 5-bit values. + * data_len: Length of the data array. + * enc: Which encoding to use (BECH32_ENCODING_BECH32{,M}). + + * Returns 1 if successful. + */ +int bech32_encode( + char *output, + const char *hrp, + const uint8_t *data, + size_t data_len, + bech32_encoding enc +); + +/** Decode a Bech32 or Bech32m string + * + * Out: hrp: Pointer to a buffer of size strlen(input) - 6. Will be + * updated to contain the null-terminated human readable part. + * data: Pointer to a buffer of size strlen(input) - 8 that will + * hold the encoded 5-bit data values. + * data_len: Pointer to a size_t that will be updated to be the number + * of entries in data. + * In: input: Pointer to a null-terminated Bech32 string. + * Returns BECH32_ENCODING_BECH32{,M} to indicate decoding was successful + * with the specified encoding standard. BECH32_ENCODING_NONE is returned if + * decoding failed. + */ +bech32_encoding bech32_decode( + char *hrp, + uint8_t *data, + size_t *data_len, + const char *input +); + +#endif diff --git a/deps/ledger-zxlib/include/sigutils.h b/deps/ledger-zxlib/include/sigutils.h new file mode 100644 index 00000000..76346c8b --- /dev/null +++ b/deps/ledger-zxlib/include/sigutils.h @@ -0,0 +1,41 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + no_error = 0, + invalid_derPrefix, + invalid_payloadLen, + invalid_rmaker, + invalid_rLen, + invalid_smarker, + invalid_sLen, +} err_convert_e; + +err_convert_e convertDERtoRSV(const uint8_t *inSignatureDER, + unsigned int inInfo, + uint8_t *outR, + uint8_t *outS, + uint8_t *outV); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/timeutils.h b/deps/ledger-zxlib/include/timeutils.h new file mode 100644 index 00000000..8d5d617b --- /dev/null +++ b/deps/ledger-zxlib/include/timeutils.h @@ -0,0 +1,77 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "zxmacros.h" +#include "zxerror.h" + +__Z_INLINE const char *getMonth(uint8_t tm_mon) { + switch (tm_mon) { + case 1: + return "Jan"; + case 2: + return "Feb"; + case 3: + return "Mar"; + case 4: + return "Apr"; + case 5: + return "May"; + case 6: + return "Jun"; + case 7: + return "Jul"; + case 8: + return "Aug"; + case 9: + return "Sep"; + case 10: + return "Oct"; + case 11: + return "Nov"; + case 12: + return "Dec"; + default: + return "ERR"; + } +} + +typedef struct { + uint8_t tm_sec; + uint8_t tm_min; + uint8_t tm_hour; + uint16_t tm_day; + uint8_t tm_mon; + uint16_t tm_year; + const char *monthName; +} timedata_t; + +zxerr_t printTime(char *out, uint16_t outLen, uint64_t t); +zxerr_t printTimeSpecialFormat(char *out, uint16_t outLen, uint64_t t); +zxerr_t decodeTime(timedata_t *timedata, uint64_t t); + +// Convert seconds since epoch to UTC date +zxerr_t extractTime(uint64_t time, timedata_t *date); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/utf8.h b/deps/ledger-zxlib/include/utf8.h new file mode 100644 index 00000000..fc7eecd7 --- /dev/null +++ b/deps/ledger-zxlib/include/utf8.h @@ -0,0 +1,1682 @@ +/* The latest version of this library is available on GitHub; + * https://github.com/sheredom/utf8.h */ + +/* This is free and unencumbered software released into the public domain. + * + * Anyone is free to copy, modify, publish, use, compile, sell, or + * distribute this software, either in source code form or as a compiled + * binary, for any purpose, commercial or non-commercial, and by any + * means. + * + * In jurisdictions that recognize copyright laws, the author or authors + * of this software dedicate any and all copyright interest in the + * software to the public domain. We make this dedication for the benefit + * of the public at large and to the detriment of our heirs and + * successors. We intend this dedication to be an overt act of + * relinquishment in perpetuity of all present and future rights to this + * software under copyright law. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * For more information, please refer to */ + +#ifndef SHEREDOM_UTF8_H_INCLUDED +#define SHEREDOM_UTF8_H_INCLUDED + +#if defined(_MSC_VER) +#pragma warning(push) + +/* disable warning: no function prototype given: converting '()' to '(void)' */ +#pragma warning(disable : 4255) + +/* disable warning: '__cplusplus' is not defined as a preprocessor macro, + * replacing with '0' for '#if/#elif' */ +#pragma warning(disable : 4668) + +/* disable warning: bytes padding added after construct */ +#pragma warning(disable : 4820) +#endif + +#include +#include + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +#if defined(_MSC_VER) && (_MSC_VER < 1920) +typedef __int32 utf8_int32_t; +#else +#include +typedef int32_t utf8_int32_t; +#endif + +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wold-style-cast" +#pragma clang diagnostic ignored "-Wcast-qual" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_MSC_VER) +#define utf8_nonnull +#define utf8_pure +#define utf8_restrict __restrict +#define utf8_weak __inline +#elif defined(__clang__) || defined(__GNUC__) +#define utf8_nonnull __attribute__((nonnull)) +#define utf8_pure __attribute__((pure)) +#define utf8_restrict __restrict__ +#define utf8_weak __attribute__((weak)) +#else +#error Non clang, non gcc, non MSVC compiler found! +#endif + +#ifdef __cplusplus +#define utf8_null NULL +#else +#define utf8_null 0 +#endif + +#if (defined(__cplusplus) && __cplusplus >= 201402L) +#define utf8_constexpr14 constexpr +#define utf8_constexpr14_impl constexpr +#else +/* constexpr and weak are incompatible. so only enable one of them */ +#define utf8_constexpr14 utf8_weak +#define utf8_constexpr14_impl +#endif + +#if defined(__cplusplus) && __cplusplus >= 202002L +using utf8_int8_t = char8_t; /* Introduced in C++20 */ +#else +typedef char utf8_int8_t; +#endif + +/* Return less than 0, 0, greater than 0 if src1 < src2, src1 == src2, src1 > + * src2 respectively, case insensitive. */ +utf8_constexpr14 utf8_nonnull utf8_pure int +utf8casecmp(const utf8_int8_t *src1, const utf8_int8_t *src2); + +/* Append the utf8 string src onto the utf8 string dst. */ +utf8_nonnull utf8_weak utf8_int8_t * +utf8cat(utf8_int8_t *utf8_restrict dst, const utf8_int8_t *utf8_restrict src); + +/* Find the first match of the utf8 codepoint chr in the utf8 string src. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8chr(const utf8_int8_t *src, utf8_int32_t chr); + +/* Return less than 0, 0, greater than 0 if src1 < src2, + * src1 == src2, src1 > src2 respectively. */ +utf8_constexpr14 utf8_nonnull utf8_pure int utf8cmp(const utf8_int8_t *src1, + const utf8_int8_t *src2); + +/* Copy the utf8 string src onto the memory allocated in dst. */ +utf8_nonnull utf8_weak utf8_int8_t * + utf8cpy(utf8_int8_t *utf8_restrict dst, const utf8_int8_t *utf8_restrict src); + +/* Number of utf8 codepoints in the utf8 string src that consists entirely + * of utf8 codepoints not from the utf8 string reject. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t +utf8cspn(const utf8_int8_t *src, const utf8_int8_t *reject); + +/* Duplicate the utf8 string src by getting its size, malloc'ing a new buffer + * copying over the data, and returning that. Or 0 if malloc failed. */ +utf8_weak utf8_int8_t *utf8dup(const utf8_int8_t *src); + +/* Number of utf8 codepoints in the utf8 string str, + * excluding the null terminating byte. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t utf8len(const utf8_int8_t *str); + +/* Similar to utf8len, except that only at most n bytes of src are looked. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t utf8nlen(const utf8_int8_t *str, + size_t n); + +/* Return less than 0, 0, greater than 0 if src1 < src2, src1 == src2, src1 > + * src2 respectively, case insensitive. Checking at most n bytes of each utf8 + * string. */ +utf8_constexpr14 utf8_nonnull utf8_pure int +utf8ncasecmp(const utf8_int8_t *src1, const utf8_int8_t *src2, size_t n); + +/* Append the utf8 string src onto the utf8 string dst, + * writing at most n+1 bytes. Can produce an invalid utf8 + * string if n falls partway through a utf8 codepoint. */ +utf8_nonnull utf8_weak utf8_int8_t * + utf8ncat(utf8_int8_t *utf8_restrict dst, const utf8_int8_t *utf8_restrict src, +size_t n); + +/* Return less than 0, 0, greater than 0 if src1 < src2, + * src1 == src2, src1 > src2 respectively. Checking at most n + * bytes of each utf8 string. */ +utf8_constexpr14 utf8_nonnull utf8_pure int +utf8ncmp(const utf8_int8_t *src1, const utf8_int8_t *src2, size_t n); + +/* Copy the utf8 string src onto the memory allocated in dst. + * Copies at most n bytes. If n falls partway through a utf8 + * codepoint, or if dst doesn't have enough room for a null + * terminator, the final string will be cut short to preserve + * utf8 validity. */ + +utf8_nonnull utf8_weak utf8_int8_t * + utf8ncpy(utf8_int8_t *utf8_restrict dst, const utf8_int8_t *utf8_restrict src, +size_t n); + +/* Similar to utf8dup, except that at most n bytes of src are copied. If src is + * longer than n, only n bytes are copied and a null byte is added. + * + * Returns a new string if successful, 0 otherwise */ +utf8_weak utf8_int8_t *utf8ndup(const utf8_int8_t *src, size_t n); + +/* Locates the first occurrence in the utf8 string str of any byte in the + * utf8 string accept, or 0 if no match was found. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8pbrk(const utf8_int8_t *str, const utf8_int8_t *accept); + +/* Find the last match of the utf8 codepoint chr in the utf8 string src. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8rchr(const utf8_int8_t *src, int chr); + +/* Number of bytes in the utf8 string str, + * including the null terminating byte. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t utf8size(const utf8_int8_t *str); + +/* Similar to utf8size, except that the null terminating byte is excluded. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t +utf8size_lazy(const utf8_int8_t *str); + +/* Similar to utf8size, except that only at most n bytes of src are looked and + * the null terminating byte is excluded. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t +utf8nsize_lazy(const utf8_int8_t *str, size_t n); + +/* Number of utf8 codepoints in the utf8 string src that consists entirely + * of utf8 codepoints from the utf8 string accept. */ +utf8_constexpr14 utf8_nonnull utf8_pure size_t +utf8spn(const utf8_int8_t *src, const utf8_int8_t *accept); + +/* The position of the utf8 string needle in the utf8 string haystack. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8str(const utf8_int8_t *haystack, const utf8_int8_t *needle); + +/* The position of the utf8 string needle in the utf8 string haystack, case + * insensitive. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8casestr(const utf8_int8_t *haystack, const utf8_int8_t *needle); + +/* Return 0 on success, or the position of the invalid + * utf8 codepoint on failure. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8valid(const utf8_int8_t *str); + +/* Similar to utf8valid, except that only at most n bytes of src are looked. */ +utf8_constexpr14 utf8_nonnull utf8_pure utf8_int8_t * +utf8nvalid(const utf8_int8_t *str, size_t n); + +/* Given a null-terminated string, makes the string valid by replacing invalid + * codepoints with a 1-byte replacement. Returns 0 on success. */ +utf8_nonnull utf8_weak int utf8makevalid(utf8_int8_t *str, +const utf8_int32_t replacement); + +/* Sets out_codepoint to the current utf8 codepoint in str, and returns the + * address of the next utf8 codepoint after the current one in str. */ +utf8_constexpr14 utf8_nonnull utf8_int8_t * +utf8codepoint(const utf8_int8_t *utf8_restrict str, + utf8_int32_t *utf8_restrict out_codepoint); + +/* Calculates the size of the next utf8 codepoint in str. */ +utf8_constexpr14 utf8_nonnull size_t +utf8codepointcalcsize(const utf8_int8_t *str); + +/* Returns the size of the given codepoint in bytes. */ +utf8_constexpr14 size_t utf8codepointsize(utf8_int32_t chr); + +/* Write a codepoint to the given string, and return the address to the next + * place after the written codepoint. Pass how many bytes left in the buffer to + * n. If there is not enough space for the codepoint, this function returns + * null. */ +utf8_nonnull utf8_weak utf8_int8_t * + utf8catcodepoint(utf8_int8_t *str, utf8_int32_t chr, size_t n); + +/* Returns 1 if the given character is lowercase, or 0 if it is not. */ +utf8_constexpr14 int utf8islower(utf8_int32_t chr); + +/* Returns 1 if the given character is uppercase, or 0 if it is not. */ +utf8_constexpr14 int utf8isupper(utf8_int32_t chr); + +/* Transform the given string into all lowercase codepoints. */ +utf8_nonnull utf8_weak void utf8lwr(utf8_int8_t *utf8_restrict str); + +/* Transform the given string into all uppercase codepoints. */ +utf8_nonnull utf8_weak void utf8upr(utf8_int8_t *utf8_restrict str); + +/* Make a codepoint lower case if possible. */ +utf8_constexpr14 utf8_int32_t utf8lwrcodepoint(utf8_int32_t cp); + +/* Make a codepoint upper case if possible. */ +utf8_constexpr14 utf8_int32_t utf8uprcodepoint(utf8_int32_t cp); + +/* Sets out_codepoint to the current utf8 codepoint in str, and returns the + * address of the previous utf8 codepoint before the current one in str. */ +utf8_constexpr14 utf8_nonnull utf8_int8_t * +utf8rcodepoint(const utf8_int8_t *utf8_restrict str, + utf8_int32_t *utf8_restrict out_codepoint); + +/* Duplicate the utf8 string src by getting its size, calling alloc_func_ptr to + * copy over data to a new buffer, and returning that. Or 0 if alloc_func_ptr + * returned null. */ +utf8_weak utf8_int8_t *utf8dup_ex(const utf8_int8_t *src, + utf8_int8_t *(*alloc_func_ptr)(utf8_int8_t *, + size_t), + utf8_int8_t *user_data); + +/* Similar to utf8dup, except that at most n bytes of src are copied. If src is + * longer than n, only n bytes are copied and a null byte is added. + * + * Returns a new string if successful, 0 otherwise. */ +utf8_weak utf8_int8_t *utf8ndup_ex(const utf8_int8_t *src, size_t n, + utf8_int8_t *(*alloc_func_ptr)(utf8_int8_t *, + size_t), + utf8_int8_t *user_data); + +#undef utf8_weak +#undef utf8_pure +#undef utf8_nonnull + +utf8_constexpr14_impl int utf8casecmp(const utf8_int8_t *src1, + const utf8_int8_t *src2) { + utf8_int32_t src1_lwr_cp = 0, src2_lwr_cp = 0, src1_upr_cp = 0, + src2_upr_cp = 0, src1_orig_cp = 0, src2_orig_cp = 0; + + for (;;) { + src1 = utf8codepoint(src1, &src1_orig_cp); + src2 = utf8codepoint(src2, &src2_orig_cp); + + /* lower the srcs if required */ + src1_lwr_cp = utf8lwrcodepoint(src1_orig_cp); + src2_lwr_cp = utf8lwrcodepoint(src2_orig_cp); + + /* lower the srcs if required */ + src1_upr_cp = utf8uprcodepoint(src1_orig_cp); + src2_upr_cp = utf8uprcodepoint(src2_orig_cp); + + /* check if the lowered codepoints match */ + if ((0 == src1_orig_cp) && (0 == src2_orig_cp)) { + return 0; + } else if ((src1_lwr_cp == src2_lwr_cp) || (src1_upr_cp == src2_upr_cp)) { + continue; + } + + /* if they don't match, then we return the difference between the characters + */ + return src1_lwr_cp - src2_lwr_cp; + } +} + +utf8_int8_t *utf8cat(utf8_int8_t *utf8_restrict dst, +const utf8_int8_t *utf8_restrict src) { +utf8_int8_t *d = dst; +/* find the null terminating byte in dst */ +while ('\0' != *d) { +d++; +} + +/* overwriting the null terminating byte in dst, append src byte-by-byte */ +while ('\0' != *src) { +*d++ = *src++; +} + +/* write out a new null terminating byte into dst */ +*d = '\0'; + +return dst; +} + +utf8_constexpr14_impl utf8_int8_t *utf8chr(const utf8_int8_t *src, + utf8_int32_t chr) { + utf8_int8_t c[5] = {'\0', '\0', '\0', '\0', '\0'}; + + if (0 == chr) { + /* being asked to return position of null terminating byte, so + * just run s to the end, and return! */ + while ('\0' != *src) { + src++; + } + return (utf8_int8_t *)src; + } else if (0 == ((utf8_int32_t)0xffffff80 & chr)) { + /* 1-byte/7-bit ascii + * (0b0xxxxxxx) */ + c[0] = (utf8_int8_t)chr; + } else if (0 == ((utf8_int32_t)0xfffff800 & chr)) { + /* 2-byte/11-bit utf8 code point + * (0b110xxxxx 0b10xxxxxx) */ + c[0] = (utf8_int8_t)(0xc0 | (utf8_int8_t)(chr >> 6)); + c[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); + } else if (0 == ((utf8_int32_t)0xffff0000 & chr)) { + /* 3-byte/16-bit utf8 code point + * (0b1110xxxx 0b10xxxxxx 0b10xxxxxx) */ + c[0] = (utf8_int8_t)(0xe0 | (utf8_int8_t)(chr >> 12)); + c[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 6) & 0x3f)); + c[2] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); + } else { /* if (0 == ((int)0xffe00000 & chr)) { */ + /* 4-byte/21-bit utf8 code point + * (0b11110xxx 0b10xxxxxx 0b10xxxxxx 0b10xxxxxx) */ + c[0] = (utf8_int8_t)(0xf0 | (utf8_int8_t)(chr >> 18)); + c[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 12) & 0x3f)); + c[2] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 6) & 0x3f)); + c[3] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); + } + + /* we've made c into a 2 utf8 codepoint string, one for the chr we are + * seeking, another for the null terminating byte. Now use utf8str to + * search */ + return utf8str(src, c); +} + +utf8_constexpr14_impl int utf8cmp(const utf8_int8_t *src1, + const utf8_int8_t *src2) { + while (('\0' != *src1) || ('\0' != *src2)) { + if (*src1 < *src2) { + return -1; + } else if (*src1 > *src2) { + return 1; + } + + src1++; + src2++; + } + + /* both utf8 strings matched */ + return 0; +} + +utf8_constexpr14_impl int utf8coll(const utf8_int8_t *src1, + const utf8_int8_t *src2); + +utf8_int8_t *utf8cpy(utf8_int8_t *utf8_restrict dst, +const utf8_int8_t *utf8_restrict src) { +utf8_int8_t *d = dst; + +/* overwriting anything previously in dst, write byte-by-byte + * from src */ +while ('\0' != *src) { +*d++ = *src++; +} + +/* append null terminating byte */ +*d = '\0'; + +return dst; +} + +utf8_constexpr14_impl size_t utf8cspn(const utf8_int8_t *src, + const utf8_int8_t *reject) { + size_t chars = 0; + + while ('\0' != *src) { + const utf8_int8_t *r = reject; + size_t offset = 0; + + while ('\0' != *r) { + /* checking that if *r is the start of a utf8 codepoint + * (it is not 0b10xxxxxx) and we have successfully matched + * a previous character (0 < offset) - we found a match */ + if ((0x80 != (0xc0 & *r)) && (0 < offset)) { + return chars; + } else { + if (*r == src[offset]) { + /* part of a utf8 codepoint matched, so move our checking + * onwards to the next byte */ + offset++; + r++; + } else { + /* r could be in the middle of an unmatching utf8 code point, + * so we need to march it on to the next character beginning, */ + + do { + r++; + } while (0x80 == (0xc0 & *r)); + + /* reset offset too as we found a mismatch */ + offset = 0; + } + } + } + + /* found a match at the end of *r, so didn't get a chance to test it */ + if (0 < offset) { + return chars; + } + + /* the current utf8 codepoint in src did not match reject, but src + * could have been partway through a utf8 codepoint, so we need to + * march it onto the next utf8 codepoint starting byte */ + do { + src++; + } while ((0x80 == (0xc0 & *src))); + chars++; + } + + return chars; +} + +utf8_int8_t *utf8dup(const utf8_int8_t *src) { + return utf8dup_ex(src, utf8_null, utf8_null); +} + +utf8_int8_t *utf8dup_ex(const utf8_int8_t *src, + utf8_int8_t *(*alloc_func_ptr)(utf8_int8_t *, size_t), + utf8_int8_t *user_data) { +utf8_int8_t *n = utf8_null; + +/* figure out how many bytes (including the terminator) we need to copy first + */ +size_t bytes = utf8size(src); + +if (alloc_func_ptr) { +n = alloc_func_ptr(user_data, bytes); +} else { +n = (utf8_int8_t *)malloc(bytes); +} + +if (utf8_null == n) { +/* out of memory so we bail */ +return utf8_null; +} else { +bytes = 0; + +/* copy src byte-by-byte into our new utf8 string */ +while ('\0' != src[bytes]) { +n[bytes] = src[bytes]; +bytes++; +} + +/* append null terminating byte */ +n[bytes] = '\0'; +return n; +} +} + +utf8_constexpr14_impl utf8_int8_t *utf8fry(const utf8_int8_t *str); + +utf8_constexpr14_impl size_t utf8len(const utf8_int8_t *str) { + return utf8nlen(str, SIZE_MAX); +} + +utf8_constexpr14_impl size_t utf8nlen(const utf8_int8_t *str, size_t n) { + const utf8_int8_t *t = str; + size_t length = 0; + + while ((size_t)(str - t) < n && '\0' != *str) { + if (0xf0 == (0xf8 & *str)) { + /* 4-byte utf8 code point (began with 0b11110xxx) */ + str += 4; + } else if (0xe0 == (0xf0 & *str)) { + /* 3-byte utf8 code point (began with 0b1110xxxx) */ + str += 3; + } else if (0xc0 == (0xe0 & *str)) { + /* 2-byte utf8 code point (began with 0b110xxxxx) */ + str += 2; + } else { /* if (0x00 == (0x80 & *s)) { */ + /* 1-byte ascii (began with 0b0xxxxxxx) */ + str += 1; + } + + /* no matter the bytes we marched s forward by, it was + * only 1 utf8 codepoint */ + length++; + } + + if ((size_t)(str - t) > n) { + length--; + } + return length; +} + +utf8_constexpr14_impl int utf8ncasecmp(const utf8_int8_t *src1, + const utf8_int8_t *src2, size_t n) { + utf8_int32_t src1_lwr_cp = 0, src2_lwr_cp = 0, src1_upr_cp = 0, + src2_upr_cp = 0, src1_orig_cp = 0, src2_orig_cp = 0; + + do { + const utf8_int8_t *const s1 = src1; + const utf8_int8_t *const s2 = src2; + + /* first check that we have enough bytes left in n to contain an entire + * codepoint */ + if (0 == n) { + return 0; + } + + if ((1 == n) && ((0xc0 == (0xe0 & *s1)) || (0xc0 == (0xe0 & *s2)))) { + const utf8_int32_t c1 = (0xe0 & *s1); + const utf8_int32_t c2 = (0xe0 & *s2); + + if (c1 < c2) { + return c1 - c2; + } else { + return 0; + } + } + + if ((2 >= n) && ((0xe0 == (0xf0 & *s1)) || (0xe0 == (0xf0 & *s2)))) { + const utf8_int32_t c1 = (0xf0 & *s1); + const utf8_int32_t c2 = (0xf0 & *s2); + + if (c1 < c2) { + return c1 - c2; + } else { + return 0; + } + } + + if ((3 >= n) && ((0xf0 == (0xf8 & *s1)) || (0xf0 == (0xf8 & *s2)))) { + const utf8_int32_t c1 = (0xf8 & *s1); + const utf8_int32_t c2 = (0xf8 & *s2); + + if (c1 < c2) { + return c1 - c2; + } else { + return 0; + } + } + + src1 = utf8codepoint(src1, &src1_orig_cp); + src2 = utf8codepoint(src2, &src2_orig_cp); + n -= utf8codepointsize(src1_orig_cp); + + src1_lwr_cp = utf8lwrcodepoint(src1_orig_cp); + src2_lwr_cp = utf8lwrcodepoint(src2_orig_cp); + + src1_upr_cp = utf8uprcodepoint(src1_orig_cp); + src2_upr_cp = utf8uprcodepoint(src2_orig_cp); + + /* check if the lowered codepoints match */ + if ((0 == src1_orig_cp) && (0 == src2_orig_cp)) { + return 0; + } else if ((src1_lwr_cp == src2_lwr_cp) || (src1_upr_cp == src2_upr_cp)) { + continue; + } + + /* if they don't match, then we return the difference between the characters + */ + return src1_lwr_cp - src2_lwr_cp; + } while (0 < n); + + /* both utf8 strings matched */ + return 0; +} + +utf8_int8_t *utf8ncat(utf8_int8_t *utf8_restrict dst, +const utf8_int8_t *utf8_restrict src, size_t n) { +utf8_int8_t *d = dst; + +/* find the null terminating byte in dst */ +while ('\0' != *d) { +d++; +} + +/* overwriting the null terminating byte in dst, append src byte-by-byte + * stopping if we run out of space */ +do { +*d++ = *src++; +} while (('\0' != *src) && (0 != --n)); + +/* write out a new null terminating byte into dst */ +*d = '\0'; + +return dst; +} + +utf8_constexpr14_impl int utf8ncmp(const utf8_int8_t *src1, + const utf8_int8_t *src2, size_t n) { + while ((0 != n--) && (('\0' != *src1) || ('\0' != *src2))) { + if (*src1 < *src2) { + return -1; + } else if (*src1 > *src2) { + return 1; + } + + src1++; + src2++; + } + + /* both utf8 strings matched */ + return 0; +} + +utf8_int8_t *utf8ncpy(utf8_int8_t *utf8_restrict dst, +const utf8_int8_t *utf8_restrict src, size_t n) { +utf8_int8_t *d = dst; +size_t index = 0, check_index = 0; + +if (n == 0) { +return dst; +} + +/* overwriting anything previously in dst, write byte-by-byte + * from src */ +for (index = 0; index < n; index++) { +d[index] = src[index]; +if ('\0' == src[index]) { +break; +} +} + +for (check_index = index - 1; +check_index > 0 && 0x80 == (0xc0 & d[check_index]); check_index--) { +/* just moving the index */ +} + +if (check_index < index && +(index - check_index) < utf8codepointsize(d[check_index])) { +index = check_index; +} + +/* append null terminating byte */ +for (; index < n; index++) { +d[index] = 0; +} + +return dst; +} + +utf8_int8_t *utf8ndup(const utf8_int8_t *src, size_t n) { + return utf8ndup_ex(src, n, utf8_null, utf8_null); +} + +utf8_int8_t *utf8ndup_ex(const utf8_int8_t *src, size_t n, + utf8_int8_t *(*alloc_func_ptr)(utf8_int8_t *, size_t), + utf8_int8_t *user_data) { +utf8_int8_t *c = utf8_null; +size_t bytes = 0; + +/* Find the end of the string or stop when n is reached */ +while (bytes < n && '\0' != src[bytes]) { +bytes++; +} + +/* In case bytes is actually less than n, we need to set it + * to be used later in the copy byte by byte. */ +n = bytes; + +if (alloc_func_ptr) { +c = alloc_func_ptr(user_data, bytes + 1); +} else { +c = (utf8_int8_t *)malloc(bytes + 1); +} + +if (utf8_null == c) { +/* out of memory so we bail */ +return utf8_null; +} + +bytes = 0; + +/* copy src byte-by-byte into our new utf8 string */ +while (bytes < n && '\0' != src[bytes]) { +c[bytes] = src[bytes]; +bytes++; +} + +/* append null terminating byte */ +c[bytes] = '\0'; +return c; +} + +utf8_constexpr14_impl utf8_int8_t *utf8rchr(const utf8_int8_t *src, int chr) { + + utf8_int8_t *match = utf8_null; + utf8_int8_t c[5] = {'\0', '\0', '\0', '\0', '\0'}; + + if (0 == chr) { + /* being asked to return position of null terminating byte, so + * just run s to the end, and return! */ + while ('\0' != *src) { + src++; + } + return (utf8_int8_t *)src; + } else if (0 == ((int)0xffffff80 & chr)) { + /* 1-byte/7-bit ascii + * (0b0xxxxxxx) */ + c[0] = (utf8_int8_t)chr; + } else if (0 == ((int)0xfffff800 & chr)) { + /* 2-byte/11-bit utf8 code point + * (0b110xxxxx 0b10xxxxxx) */ + c[0] = (utf8_int8_t)(0xc0 | (utf8_int8_t)(chr >> 6)); + c[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); + } else if (0 == ((int)0xffff0000 & chr)) { + /* 3-byte/16-bit utf8 code point + * (0b1110xxxx 0b10xxxxxx 0b10xxxxxx) */ + c[0] = (utf8_int8_t)(0xe0 | (utf8_int8_t)(chr >> 12)); + c[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 6) & 0x3f)); + c[2] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); + } else { /* if (0 == ((int)0xffe00000 & chr)) { */ + /* 4-byte/21-bit utf8 code point + * (0b11110xxx 0b10xxxxxx 0b10xxxxxx 0b10xxxxxx) */ + c[0] = (utf8_int8_t)(0xf0 | (utf8_int8_t)(chr >> 18)); + c[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 12) & 0x3f)); + c[2] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 6) & 0x3f)); + c[3] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); + } + + /* we've created a 2 utf8 codepoint string in c that is + * the utf8 character asked for by chr, and a null + * terminating byte */ + + while ('\0' != *src) { + size_t offset = 0; + + while (src[offset] == c[offset]) { + offset++; + } + + if ('\0' == c[offset]) { + /* we found a matching utf8 code point */ + match = (utf8_int8_t *)src; + src += offset; + } else { + src += offset; + + /* need to march s along to next utf8 codepoint start + * (the next byte that doesn't match 0b10xxxxxx) */ + if ('\0' != *src) { + do { + src++; + } while (0x80 == (0xc0 & *src)); + } + } + } + + /* return the last match we found (or 0 if no match was found) */ + return match; +} + +utf8_constexpr14_impl utf8_int8_t *utf8pbrk(const utf8_int8_t *str, + const utf8_int8_t *accept) { + while ('\0' != *str) { + const utf8_int8_t *a = accept; + size_t offset = 0; + + while ('\0' != *a) { + /* checking that if *a is the start of a utf8 codepoint + * (it is not 0b10xxxxxx) and we have successfully matched + * a previous character (0 < offset) - we found a match */ + if ((0x80 != (0xc0 & *a)) && (0 < offset)) { + return (utf8_int8_t *)str; + } else { + if (*a == str[offset]) { + /* part of a utf8 codepoint matched, so move our checking + * onwards to the next byte */ + offset++; + a++; + } else { + /* r could be in the middle of an unmatching utf8 code point, + * so we need to march it on to the next character beginning, */ + + do { + a++; + } while (0x80 == (0xc0 & *a)); + + /* reset offset too as we found a mismatch */ + offset = 0; + } + } + } + + /* we found a match on the last utf8 codepoint */ + if (0 < offset) { + return (utf8_int8_t *)str; + } + + /* the current utf8 codepoint in src did not match accept, but src + * could have been partway through a utf8 codepoint, so we need to + * march it onto the next utf8 codepoint starting byte */ + do { + str++; + } while ((0x80 == (0xc0 & *str))); + } + + return utf8_null; +} + +utf8_constexpr14_impl size_t utf8size(const utf8_int8_t *str) { + return utf8size_lazy(str) + 1; +} + +utf8_constexpr14_impl size_t utf8size_lazy(const utf8_int8_t *str) { + return utf8nsize_lazy(str, SIZE_MAX); +} + +utf8_constexpr14_impl size_t utf8nsize_lazy(const utf8_int8_t *str, size_t n) { + size_t size = 0; + while (size < n && '\0' != str[size]) { + size++; + } + return size; +} + +utf8_constexpr14_impl size_t utf8spn(const utf8_int8_t *src, + const utf8_int8_t *accept) { + size_t chars = 0; + + while ('\0' != *src) { + const utf8_int8_t *a = accept; + size_t offset = 0; + + while ('\0' != *a) { + /* checking that if *r is the start of a utf8 codepoint + * (it is not 0b10xxxxxx) and we have successfully matched + * a previous character (0 < offset) - we found a match */ + if ((0x80 != (0xc0 & *a)) && (0 < offset)) { + /* found a match, so increment the number of utf8 codepoints + * that have matched and stop checking whether any other utf8 + * codepoints in a match */ + chars++; + src += offset; + offset = 0; + break; + } else { + if (*a == src[offset]) { + offset++; + a++; + } else { + /* a could be in the middle of an unmatching utf8 codepoint, + * so we need to march it on to the next character beginning, */ + do { + a++; + } while (0x80 == (0xc0 & *a)); + + /* reset offset too as we found a mismatch */ + offset = 0; + } + } + } + + /* found a match at the end of *a, so didn't get a chance to test it */ + if (0 < offset) { + chars++; + src += offset; + continue; + } + + /* if a got to its terminating null byte, then we didn't find a match. + * Return the current number of matched utf8 codepoints */ + if ('\0' == *a) { + return chars; + } + } + + return chars; +} + +utf8_constexpr14_impl utf8_int8_t *utf8str(const utf8_int8_t *haystack, + const utf8_int8_t *needle) { + utf8_int32_t throwaway_codepoint = 0; + + /* if needle has no utf8 codepoints before the null terminating + * byte then return haystack */ + if ('\0' == *needle) { + return (utf8_int8_t *)haystack; + } + + while ('\0' != *haystack) { + const utf8_int8_t *maybeMatch = haystack; + const utf8_int8_t *n = needle; + + while (*haystack == *n && (*haystack != '\0' && *n != '\0')) { + n++; + haystack++; + } + + if ('\0' == *n) { + /* we found the whole utf8 string for needle in haystack at + * maybeMatch, so return it */ + return (utf8_int8_t *)maybeMatch; + } else { + /* h could be in the middle of an unmatching utf8 codepoint, + * so we need to march it on to the next character beginning + * starting from the current character */ + haystack = utf8codepoint(maybeMatch, &throwaway_codepoint); + } + } + + /* no match */ + return utf8_null; +} + +utf8_constexpr14_impl utf8_int8_t *utf8casestr(const utf8_int8_t *haystack, + const utf8_int8_t *needle) { + /* if needle has no utf8 codepoints before the null terminating + * byte then return haystack */ + if ('\0' == *needle) { + return (utf8_int8_t *)haystack; + } + + for (;;) { + const utf8_int8_t *maybeMatch = haystack; + const utf8_int8_t *n = needle; + utf8_int32_t h_cp = 0, n_cp = 0; + + /* Get the next code point and track it */ + const utf8_int8_t *nextH = haystack = utf8codepoint(haystack, &h_cp); + n = utf8codepoint(n, &n_cp); + + while ((0 != h_cp) && (0 != n_cp)) { + h_cp = utf8lwrcodepoint(h_cp); + n_cp = utf8lwrcodepoint(n_cp); + + /* if we find a mismatch, bail out! */ + if (h_cp != n_cp) { + break; + } + + haystack = utf8codepoint(haystack, &h_cp); + n = utf8codepoint(n, &n_cp); + } + + if (0 == n_cp) { + /* we found the whole utf8 string for needle in haystack at + * maybeMatch, so return it */ + return (utf8_int8_t *)maybeMatch; + } + + if (0 == h_cp) { + /* no match */ + return utf8_null; + } + + /* Roll back to the next code point in the haystack to test */ + haystack = nextH; + } +} + +utf8_constexpr14_impl utf8_int8_t *utf8valid(const utf8_int8_t *str) { + return utf8nvalid(str, SIZE_MAX); +} + +utf8_constexpr14_impl utf8_int8_t *utf8nvalid(const utf8_int8_t *str, + size_t n) { + const utf8_int8_t *t = str; + size_t consumed = 0, remained = 0; + + while ((void)(consumed = (size_t)(str - t)), consumed < n && '\0' != *str) { + remained = n - consumed; + + if (0xf0 == (0xf8 & *str)) { + /* ensure that there's 4 bytes or more remained */ + if (remained < 4) { + return (utf8_int8_t *)str; + } + + /* ensure each of the 3 following bytes in this 4-byte + * utf8 codepoint began with 0b10xxxxxx */ + if ((0x80 != (0xc0 & str[1])) || (0x80 != (0xc0 & str[2])) || + (0x80 != (0xc0 & str[3]))) { + return (utf8_int8_t *)str; + } + + /* ensure that our utf8 codepoint ended after 4 bytes */ + if (0x80 == (0xc0 & str[4])) { + return (utf8_int8_t *)str; + } + + /* ensure that the top 5 bits of this 4-byte utf8 + * codepoint were not 0, as then we could have used + * one of the smaller encodings */ + if ((0 == (0x07 & str[0])) && (0 == (0x30 & str[1]))) { + return (utf8_int8_t *)str; + } + + /* 4-byte utf8 code point (began with 0b11110xxx) */ + str += 4; + } else if (0xe0 == (0xf0 & *str)) { + /* ensure that there's 3 bytes or more remained */ + if (remained < 3) { + return (utf8_int8_t *)str; + } + + /* ensure each of the 2 following bytes in this 3-byte + * utf8 codepoint began with 0b10xxxxxx */ + if ((0x80 != (0xc0 & str[1])) || (0x80 != (0xc0 & str[2]))) { + return (utf8_int8_t *)str; + } + + /* ensure that our utf8 codepoint ended after 3 bytes */ + if (0x80 == (0xc0 & str[3])) { + return (utf8_int8_t *)str; + } + + /* ensure that the top 5 bits of this 3-byte utf8 + * codepoint were not 0, as then we could have used + * one of the smaller encodings */ + if ((0 == (0x0f & str[0])) && (0 == (0x20 & str[1]))) { + return (utf8_int8_t *)str; + } + + /* 3-byte utf8 code point (began with 0b1110xxxx) */ + str += 3; + } else if (0xc0 == (0xe0 & *str)) { + /* ensure that there's 2 bytes or more remained */ + if (remained < 2) { + return (utf8_int8_t *)str; + } + + /* ensure the 1 following byte in this 2-byte + * utf8 codepoint began with 0b10xxxxxx */ + if (0x80 != (0xc0 & str[1])) { + return (utf8_int8_t *)str; + } + + /* ensure that our utf8 codepoint ended after 2 bytes */ + if (0x80 == (0xc0 & str[2])) { + return (utf8_int8_t *)str; + } + + /* ensure that the top 4 bits of this 2-byte utf8 + * codepoint were not 0, as then we could have used + * one of the smaller encodings */ + if (0 == (0x1e & str[0])) { + return (utf8_int8_t *)str; + } + + /* 2-byte utf8 code point (began with 0b110xxxxx) */ + str += 2; + } else if (0x00 == (0x80 & *str)) { + /* 1-byte ascii (began with 0b0xxxxxxx) */ + str += 1; + } else { + /* we have an invalid 0b1xxxxxxx utf8 code point entry */ + return (utf8_int8_t *)str; + } + } + + return utf8_null; +} + +int utf8makevalid(utf8_int8_t *str, const utf8_int32_t replacement) { +utf8_int8_t *read = str; +utf8_int8_t *write = read; +const utf8_int8_t r = (utf8_int8_t)replacement; +utf8_int32_t codepoint = 0; + +if (replacement > 0x7f) { +return -1; +} + +while ('\0' != *read) { +if (0xf0 == (0xf8 & *read)) { +/* ensure each of the 3 following bytes in this 4-byte + * utf8 codepoint began with 0b10xxxxxx */ +if ((0x80 != (0xc0 & read[1])) || (0x80 != (0xc0 & read[2])) || +(0x80 != (0xc0 & read[3]))) { +*write++ = r; +read++; +continue; +} + +/* 4-byte utf8 code point (began with 0b11110xxx) */ +read = utf8codepoint(read, &codepoint); +write = utf8catcodepoint(write, codepoint, 4); +} else if (0xe0 == (0xf0 & *read)) { +/* ensure each of the 2 following bytes in this 3-byte + * utf8 codepoint began with 0b10xxxxxx */ +if ((0x80 != (0xc0 & read[1])) || (0x80 != (0xc0 & read[2]))) { +*write++ = r; +read++; +continue; +} + +/* 3-byte utf8 code point (began with 0b1110xxxx) */ +read = utf8codepoint(read, &codepoint); +write = utf8catcodepoint(write, codepoint, 3); +} else if (0xc0 == (0xe0 & *read)) { +/* ensure the 1 following byte in this 2-byte + * utf8 codepoint began with 0b10xxxxxx */ +if (0x80 != (0xc0 & read[1])) { +*write++ = r; +read++; +continue; +} + +/* 2-byte utf8 code point (began with 0b110xxxxx) */ +read = utf8codepoint(read, &codepoint); +write = utf8catcodepoint(write, codepoint, 2); +} else if (0x00 == (0x80 & *read)) { +/* 1-byte ascii (began with 0b0xxxxxxx) */ +read = utf8codepoint(read, &codepoint); +write = utf8catcodepoint(write, codepoint, 1); +} else { +/* if we got here then we've got a dangling continuation (0b10xxxxxx) */ +*write++ = r; +read++; +continue; +} +} + +*write = '\0'; + +return 0; +} + +utf8_constexpr14_impl utf8_int8_t * +utf8codepoint(const utf8_int8_t *utf8_restrict str, + utf8_int32_t *utf8_restrict out_codepoint) { + if (0xf0 == (0xf8 & str[0])) { + /* 4 byte utf8 codepoint */ + *out_codepoint = ((0x07 & str[0]) << 18) | ((0x3f & str[1]) << 12) | + ((0x3f & str[2]) << 6) | (0x3f & str[3]); + str += 4; + } else if (0xe0 == (0xf0 & str[0])) { + /* 3 byte utf8 codepoint */ + *out_codepoint = + ((0x0f & str[0]) << 12) | ((0x3f & str[1]) << 6) | (0x3f & str[2]); + str += 3; + } else if (0xc0 == (0xe0 & str[0])) { + /* 2 byte utf8 codepoint */ + *out_codepoint = ((0x1f & str[0]) << 6) | (0x3f & str[1]); + str += 2; + } else { + /* 1 byte utf8 codepoint otherwise */ + *out_codepoint = str[0]; + str += 1; + } + + return (utf8_int8_t *)str; +} + +utf8_constexpr14_impl size_t utf8codepointcalcsize(const utf8_int8_t *str) { + if (0xf0 == (0xf8 & str[0])) { + /* 4 byte utf8 codepoint */ + return 4; + } else if (0xe0 == (0xf0 & str[0])) { + /* 3 byte utf8 codepoint */ + return 3; + } else if (0xc0 == (0xe0 & str[0])) { + /* 2 byte utf8 codepoint */ + return 2; + } + + /* 1 byte utf8 codepoint otherwise */ + return 1; +} + +utf8_constexpr14_impl size_t utf8codepointsize(utf8_int32_t chr) { + if (0 == ((utf8_int32_t)0xffffff80 & chr)) { + return 1; + } else if (0 == ((utf8_int32_t)0xfffff800 & chr)) { + return 2; + } else if (0 == ((utf8_int32_t)0xffff0000 & chr)) { + return 3; + } else { /* if (0 == ((int)0xffe00000 & chr)) { */ + return 4; + } +} + +utf8_int8_t *utf8catcodepoint(utf8_int8_t *str, utf8_int32_t chr, size_t n) { +if (0 == ((utf8_int32_t)0xffffff80 & chr)) { +/* 1-byte/7-bit ascii + * (0b0xxxxxxx) */ +if (n < 1) { +return utf8_null; +} +str[0] = (utf8_int8_t)chr; +str += 1; +} else if (0 == ((utf8_int32_t)0xfffff800 & chr)) { +/* 2-byte/11-bit utf8 code point + * (0b110xxxxx 0b10xxxxxx) */ +if (n < 2) { +return utf8_null; +} +str[0] = (utf8_int8_t)(0xc0 | (utf8_int8_t)((chr >> 6) & 0x1f)); +str[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); +str += 2; +} else if (0 == ((utf8_int32_t)0xffff0000 & chr)) { +/* 3-byte/16-bit utf8 code point + * (0b1110xxxx 0b10xxxxxx 0b10xxxxxx) */ +if (n < 3) { +return utf8_null; +} +str[0] = (utf8_int8_t)(0xe0 | (utf8_int8_t)((chr >> 12) & 0x0f)); +str[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 6) & 0x3f)); +str[2] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); +str += 3; +} else { /* if (0 == ((int)0xffe00000 & chr)) { */ +/* 4-byte/21-bit utf8 code point + * (0b11110xxx 0b10xxxxxx 0b10xxxxxx 0b10xxxxxx) */ +if (n < 4) { +return utf8_null; +} +str[0] = (utf8_int8_t)(0xf0 | (utf8_int8_t)((chr >> 18) & 0x07)); +str[1] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 12) & 0x3f)); +str[2] = (utf8_int8_t)(0x80 | (utf8_int8_t)((chr >> 6) & 0x3f)); +str[3] = (utf8_int8_t)(0x80 | (utf8_int8_t)(chr & 0x3f)); +str += 4; +} + +return str; +} + +utf8_constexpr14_impl int utf8islower(utf8_int32_t chr) { + return chr != utf8uprcodepoint(chr); +} + +utf8_constexpr14_impl int utf8isupper(utf8_int32_t chr) { + return chr != utf8lwrcodepoint(chr); +} + +void utf8lwr(utf8_int8_t *utf8_restrict str) { +utf8_int32_t cp = 0; +utf8_int8_t *pn = utf8codepoint(str, &cp); + +while (cp != 0) { +const utf8_int32_t lwr_cp = utf8lwrcodepoint(cp); +const size_t size = utf8codepointsize(lwr_cp); + +if (lwr_cp != cp) { +utf8catcodepoint(str, lwr_cp, size); +} + +str = pn; +pn = utf8codepoint(str, &cp); +} +} + +void utf8upr(utf8_int8_t *utf8_restrict str) { +utf8_int32_t cp = 0; +utf8_int8_t *pn = utf8codepoint(str, &cp); + +while (cp != 0) { +const utf8_int32_t lwr_cp = utf8uprcodepoint(cp); +const size_t size = utf8codepointsize(lwr_cp); + +if (lwr_cp != cp) { +utf8catcodepoint(str, lwr_cp, size); +} + +str = pn; +pn = utf8codepoint(str, &cp); +} +} + +utf8_constexpr14_impl utf8_int32_t utf8lwrcodepoint(utf8_int32_t cp) { + if (((0x0041 <= cp) && (0x005a >= cp)) || + ((0x00c0 <= cp) && (0x00d6 >= cp)) || + ((0x00d8 <= cp) && (0x00de >= cp)) || + ((0x0391 <= cp) && (0x03a1 >= cp)) || + ((0x03a3 <= cp) && (0x03ab >= cp)) || + ((0x0410 <= cp) && (0x042f >= cp))) { + cp += 32; + } else if ((0x0400 <= cp) && (0x040f >= cp)) { + cp += 80; + } else if (((0x0100 <= cp) && (0x012f >= cp)) || + ((0x0132 <= cp) && (0x0137 >= cp)) || + ((0x014a <= cp) && (0x0177 >= cp)) || + ((0x0182 <= cp) && (0x0185 >= cp)) || + ((0x01a0 <= cp) && (0x01a5 >= cp)) || + ((0x01de <= cp) && (0x01ef >= cp)) || + ((0x01f8 <= cp) && (0x021f >= cp)) || + ((0x0222 <= cp) && (0x0233 >= cp)) || + ((0x0246 <= cp) && (0x024f >= cp)) || + ((0x03d8 <= cp) && (0x03ef >= cp)) || + ((0x0460 <= cp) && (0x0481 >= cp)) || + ((0x048a <= cp) && (0x04ff >= cp))) { + cp |= 0x1; + } else if (((0x0139 <= cp) && (0x0148 >= cp)) || + ((0x0179 <= cp) && (0x017e >= cp)) || + ((0x01af <= cp) && (0x01b0 >= cp)) || + ((0x01b3 <= cp) && (0x01b6 >= cp)) || + ((0x01cd <= cp) && (0x01dc >= cp))) { + cp += 1; + cp &= ~0x1; + } else { + switch (cp) { + default: + break; + case 0x0178: + cp = 0x00ff; + break; + case 0x0243: + cp = 0x0180; + break; + case 0x018e: + cp = 0x01dd; + break; + case 0x023d: + cp = 0x019a; + break; + case 0x0220: + cp = 0x019e; + break; + case 0x01b7: + cp = 0x0292; + break; + case 0x01c4: + cp = 0x01c6; + break; + case 0x01c7: + cp = 0x01c9; + break; + case 0x01ca: + cp = 0x01cc; + break; + case 0x01f1: + cp = 0x01f3; + break; + case 0x01f7: + cp = 0x01bf; + break; + case 0x0187: + cp = 0x0188; + break; + case 0x018b: + cp = 0x018c; + break; + case 0x0191: + cp = 0x0192; + break; + case 0x0198: + cp = 0x0199; + break; + case 0x01a7: + cp = 0x01a8; + break; + case 0x01ac: + cp = 0x01ad; + break; + case 0x01af: + cp = 0x01b0; + break; + case 0x01b8: + cp = 0x01b9; + break; + case 0x01bc: + cp = 0x01bd; + break; + case 0x01f4: + cp = 0x01f5; + break; + case 0x023b: + cp = 0x023c; + break; + case 0x0241: + cp = 0x0242; + break; + case 0x03fd: + cp = 0x037b; + break; + case 0x03fe: + cp = 0x037c; + break; + case 0x03ff: + cp = 0x037d; + break; + case 0x037f: + cp = 0x03f3; + break; + case 0x0386: + cp = 0x03ac; + break; + case 0x0388: + cp = 0x03ad; + break; + case 0x0389: + cp = 0x03ae; + break; + case 0x038a: + cp = 0x03af; + break; + case 0x038c: + cp = 0x03cc; + break; + case 0x038e: + cp = 0x03cd; + break; + case 0x038f: + cp = 0x03ce; + break; + case 0x0370: + cp = 0x0371; + break; + case 0x0372: + cp = 0x0373; + break; + case 0x0376: + cp = 0x0377; + break; + case 0x03f4: + cp = 0x03b8; + break; + case 0x03cf: + cp = 0x03d7; + break; + case 0x03f9: + cp = 0x03f2; + break; + case 0x03f7: + cp = 0x03f8; + break; + case 0x03fa: + cp = 0x03fb; + break; + } + } + + return cp; +} + +utf8_constexpr14_impl utf8_int32_t utf8uprcodepoint(utf8_int32_t cp) { + if (((0x0061 <= cp) && (0x007a >= cp)) || + ((0x00e0 <= cp) && (0x00f6 >= cp)) || + ((0x00f8 <= cp) && (0x00fe >= cp)) || + ((0x03b1 <= cp) && (0x03c1 >= cp)) || + ((0x03c3 <= cp) && (0x03cb >= cp)) || + ((0x0430 <= cp) && (0x044f >= cp))) { + cp -= 32; + } else if ((0x0450 <= cp) && (0x045f >= cp)) { + cp -= 80; + } else if (((0x0100 <= cp) && (0x012f >= cp)) || + ((0x0132 <= cp) && (0x0137 >= cp)) || + ((0x014a <= cp) && (0x0177 >= cp)) || + ((0x0182 <= cp) && (0x0185 >= cp)) || + ((0x01a0 <= cp) && (0x01a5 >= cp)) || + ((0x01de <= cp) && (0x01ef >= cp)) || + ((0x01f8 <= cp) && (0x021f >= cp)) || + ((0x0222 <= cp) && (0x0233 >= cp)) || + ((0x0246 <= cp) && (0x024f >= cp)) || + ((0x03d8 <= cp) && (0x03ef >= cp)) || + ((0x0460 <= cp) && (0x0481 >= cp)) || + ((0x048a <= cp) && (0x04ff >= cp))) { + cp &= ~0x1; + } else if (((0x0139 <= cp) && (0x0148 >= cp)) || + ((0x0179 <= cp) && (0x017e >= cp)) || + ((0x01af <= cp) && (0x01b0 >= cp)) || + ((0x01b3 <= cp) && (0x01b6 >= cp)) || + ((0x01cd <= cp) && (0x01dc >= cp))) { + cp -= 1; + cp |= 0x1; + } else { + switch (cp) { + default: + break; + case 0x00ff: + cp = 0x0178; + break; + case 0x0180: + cp = 0x0243; + break; + case 0x01dd: + cp = 0x018e; + break; + case 0x019a: + cp = 0x023d; + break; + case 0x019e: + cp = 0x0220; + break; + case 0x0292: + cp = 0x01b7; + break; + case 0x01c6: + cp = 0x01c4; + break; + case 0x01c9: + cp = 0x01c7; + break; + case 0x01cc: + cp = 0x01ca; + break; + case 0x01f3: + cp = 0x01f1; + break; + case 0x01bf: + cp = 0x01f7; + break; + case 0x0188: + cp = 0x0187; + break; + case 0x018c: + cp = 0x018b; + break; + case 0x0192: + cp = 0x0191; + break; + case 0x0199: + cp = 0x0198; + break; + case 0x01a8: + cp = 0x01a7; + break; + case 0x01ad: + cp = 0x01ac; + break; + case 0x01b0: + cp = 0x01af; + break; + case 0x01b9: + cp = 0x01b8; + break; + case 0x01bd: + cp = 0x01bc; + break; + case 0x01f5: + cp = 0x01f4; + break; + case 0x023c: + cp = 0x023b; + break; + case 0x0242: + cp = 0x0241; + break; + case 0x037b: + cp = 0x03fd; + break; + case 0x037c: + cp = 0x03fe; + break; + case 0x037d: + cp = 0x03ff; + break; + case 0x03f3: + cp = 0x037f; + break; + case 0x03ac: + cp = 0x0386; + break; + case 0x03ad: + cp = 0x0388; + break; + case 0x03ae: + cp = 0x0389; + break; + case 0x03af: + cp = 0x038a; + break; + case 0x03cc: + cp = 0x038c; + break; + case 0x03cd: + cp = 0x038e; + break; + case 0x03ce: + cp = 0x038f; + break; + case 0x0371: + cp = 0x0370; + break; + case 0x0373: + cp = 0x0372; + break; + case 0x0377: + cp = 0x0376; + break; + case 0x03d1: + cp = 0x0398; + break; + case 0x03d7: + cp = 0x03cf; + break; + case 0x03f2: + cp = 0x03f9; + break; + case 0x03f8: + cp = 0x03f7; + break; + case 0x03fb: + cp = 0x03fa; + break; + } + } + + return cp; +} + +utf8_constexpr14_impl utf8_int8_t * +utf8rcodepoint(const utf8_int8_t *utf8_restrict str, + utf8_int32_t *utf8_restrict out_codepoint) { + const utf8_int8_t *s = (const utf8_int8_t *)str; + + if (0xf0 == (0xf8 & s[0])) { + /* 4 byte utf8 codepoint */ + *out_codepoint = ((0x07 & s[0]) << 18) | ((0x3f & s[1]) << 12) | + ((0x3f & s[2]) << 6) | (0x3f & s[3]); + } else if (0xe0 == (0xf0 & s[0])) { + /* 3 byte utf8 codepoint */ + *out_codepoint = + ((0x0f & s[0]) << 12) | ((0x3f & s[1]) << 6) | (0x3f & s[2]); + } else if (0xc0 == (0xe0 & s[0])) { + /* 2 byte utf8 codepoint */ + *out_codepoint = ((0x1f & s[0]) << 6) | (0x3f & s[1]); + } else { + /* 1 byte utf8 codepoint otherwise */ + *out_codepoint = s[0]; + } + + do { + s--; + } while ((0 != (0x80 & s[0])) && (0x80 == (0xc0 & s[0]))); + + return (utf8_int8_t *)s; +} + +#undef utf8_restrict +#undef utf8_constexpr14 +#undef utf8_null + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#if defined(__clang__) +#pragma clang diagnostic pop +#endif + +#endif /* SHEREDOM_UTF8_H_INCLUDED */ diff --git a/deps/ledger-zxlib/include/view_templates.h b/deps/ledger-zxlib/include/view_templates.h new file mode 100644 index 00000000..26507149 --- /dev/null +++ b/deps/ledger-zxlib/include/view_templates.h @@ -0,0 +1,170 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include + +#define UI_CENTER11PX BAGL_FONT_OPEN_SANS_REGULAR_11px | BAGL_FONT_ALIGNMENT_CENTER +#define UI_CENTER11PX_BOLD BAGL_FONT_OPEN_SANS_EXTRABOLD_11px | BAGL_FONT_ALIGNMENT_CENTER +#define UI_11PX 11 + +#define DEFAULT_FONT BAGL_FONT_OPEN_SANS_LIGHT_16px | BAGL_FONT_ALIGNMENT_LEFT +#define UI_WHITE 0xFFFFFF +#define UI_BLACK 0x000000 + +#define UIID_ICONLEFT 0x10 +#define UIID_ICONRIGHT 0x11 +#define UIID_ICONREVIEW 0x12 +#define UIID_LABEL 0x20 +#define UIID_LABELSCROLL 0x71 + +#define UI_FillRectangle(id, x, y, w, h, fgcolor, bgcolor) \ +{ \ + { \ + BAGL_RECTANGLE, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + BAGL_FILL, /* fill */ \ + fgcolor, /* fgcolor */ \ + bgcolor, /* bgcolor */ \ + 0, /* font_id */ \ + 0 /* icon_id */ \ + }, \ + NULL, /* text */ \ +} + +#define UI_LabelLine(id, x, y, w, h, fgcolor, bgcolor, text) \ +{ \ + { \ + BAGL_LABELINE, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + 0, /* fill */ \ + fgcolor, /* fgcolor */ \ + bgcolor, /* bgcolor */ \ + UI_CENTER11PX, /* font_id */ \ + 0 /* icon_id */ \ + }, \ + text, /* text */ \ +} + +#define UI_LabelLineScrolling(id, x, y, w, h, fgcolor, bgcolor, text) \ +{ \ + { \ + BAGL_LABELINE, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 5 | BAGL_STROKE_FLAG_ONESHOT, /* stroke | scr pause */ \ + 0, /* radius */ \ + 0, /* fill */ \ + fgcolor, /* fgcolor */ \ + bgcolor, /* bgcolor */ \ + UI_CENTER11PX, /* font_id */ \ + 50 /* icon_id / scroll speed */ \ + }, \ + text, /* text */ \ +} + +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) +#define UI_SCREEN_WIDTH 128 +#define UI_SCREEN_HEIGHT 64 + +#define BAGL_GLYPH_ICON_LEFT ((const char*)&C_icon_left) +#define BAGL_GLYPH_ICON_RIGHT ((const char*)&C_icon_right) +#define BAGL_GLYPH_ICON_CROSS ((const char*)&C_icon_crossmark) +#define BAGL_GLYPH_ICON_CHECK ((const char*)&C_icon_validate) + +#define UI_Icon(id, x, y, w, h, icon) \ +{ \ + { \ + BAGL_ICON, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + 0, /* fill */ \ + UI_WHITE, /* fgcolor */ \ + UI_BLACK, /* bgcolor */ \ + 0, /* font_id */ \ + 0 /* icon_id */ \ + }, \ + icon, /* text */ \ + 0, /* touch_area_brim */ \ + 0, /* overfgcolor */ \ + 0, /* overbgcolor */ \ + NULL, /* tap */ \ + NULL, /* out */ \ + NULL, /* over */ \ +} + +#define UI_BACKGROUND \ + UI_FillRectangle(0, 0, 0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT, 0x000000, 0xFFFFFF) + +#define UI_BACKGROUND_LEFT_RIGHT_ICONS \ + UI_BACKGROUND, \ + UI_Icon(UIID_ICONLEFT, 2, 28, 4, 7, BAGL_GLYPH_ICON_LEFT), \ + UI_Icon(UIID_ICONRIGHT, 122, 28, 4, 7, BAGL_GLYPH_ICON_RIGHT) + +#else +#define UI_SCREEN_WIDTH 128 +#define UI_SCREEN_HEIGHT 32 + +#define UI_Icon(id, x, y, w, h, icon) \ +{ \ + { \ + BAGL_ICON, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + 0, /* fill */ \ + UI_WHITE, /* fgcolor */ \ + UI_BLACK, /* bgcolor */ \ + 0, /* font_id */ \ + icon /* icon_id */ \ + }, \ + NULL, /* text */ \ +} + +#define UI_BACKGROUND \ + UI_FillRectangle(0, 0, 0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT, 0x000000, 0xFFFFFF) + +#define UI_BACKGROUND_LEFT_RIGHT_ICONS \ + UI_BACKGROUND, \ + UI_Icon(UIID_ICONLEFT, 0, 0, 7, 7, BAGL_GLYPH_ICON_LEFT), \ + UI_Icon(UIID_ICONRIGHT, 128 - 7, 0, 7, 7, BAGL_GLYPH_ICON_RIGHT), \ + UI_Icon(UIID_ICONREVIEW, 10, 12, 7, 7, BAGL_GLYPH_ICON_EYE_BADGE) +#endif diff --git a/deps/ledger-zxlib/include/zxerror.h b/deps/ledger-zxlib/include/zxerror.h new file mode 100644 index 00000000..c2e3f891 --- /dev/null +++ b/deps/ledger-zxlib/include/zxerror.h @@ -0,0 +1,109 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#include "zxmacros.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define CHECK_ZXERR(CALL) { \ + zxerr_t err = CALL; \ + if (err!=zxerr_ok) return err;} + +typedef enum { + zxerr_unknown = 0b00000000, + zxerr_ok = 0b00000011, + zxerr_no_data = 0b00000101, + zxerr_buffer_too_small = 0b00000110, + zxerr_out_of_bounds = 0b00001001, + zxerr_encoding_failed = 0b00001010, + zxerr_invalid_crypto_settings = 0b00001100, + zxerr_ledger_api_error = 0b00001111, +} zxerr_t; + +__Z_INLINE uint8_t getErrorMessage(char *buffer, uint16_t bufferLen, zxerr_t err) { + MEMZERO(buffer, bufferLen); + if (bufferLen == 0) { + return 0; + } + + switch (err) { + case zxerr_unknown: + snprintf(buffer, bufferLen - 1, "zxerr_unknown"); + break; + case zxerr_ok: + snprintf(buffer, bufferLen - 1, "zxerr_ok"); + break; + case zxerr_no_data: + snprintf(buffer, bufferLen - 1, "zxerr_no_data"); + break; + case zxerr_out_of_bounds: + snprintf(buffer, bufferLen - 1, "zxerr_out_of_bounds"); + break; + case zxerr_encoding_failed: + snprintf(buffer, bufferLen - 1, "zxerr_encoding_failed"); + break; + case zxerr_invalid_crypto_settings: + snprintf(buffer, bufferLen - 1, "zxerr_invalid_crypto_settings"); + break; + case zxerr_ledger_api_error: + snprintf(buffer, bufferLen - 1, "zxerr_ledger_api_error"); + break; + default: + snprintf(buffer, bufferLen - 1, "err N/A"); + } + return strlen(buffer); +} + +//0b00000000 +//0b00000011 +//0b00000101 +//0b00000110 +//0b00001001 +//0b00001010 +//0b00001100 +//0b00001111 +//0b00010001 +//0b00010010 +//0b00010100 +//0b00010111 +//0b00011000 +//0b00011011 +//0b00011101 +//0b00011110 +//0b00100001 +//0b00100010 +//0b00100100 +//0b00100111 +//0b00101000 +//0b00101011 +//0b00101101 +//0b00101110 +//0b00110000 +//0b00110011 +//0b00110101 +//0b00110110 +//0b00111001 +//0b00111010 +//0b00111100 +//0b00111111 + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/zxformat.h b/deps/ledger-zxlib/include/zxformat.h new file mode 100644 index 00000000..a9c44af6 --- /dev/null +++ b/deps/ledger-zxlib/include/zxformat.h @@ -0,0 +1,482 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "zxmacros.h" +#include "zxerror.h" + +#define IS_PRINTABLE(c) (c >= 0x20 && c <= 0x7e) + +#define NUM_TO_STR(TYPE) __Z_INLINE const char * TYPE##_to_str(char *data, int dataLen, TYPE##_t number) { \ + if (dataLen < 2) return "Buffer too small"; \ + MEMZERO(data, dataLen); \ + char *p = data; \ + if (number < 0) { *(p++) = '-'; data++; } \ + else if (number == 0) { *(p++) = '0'; } \ + TYPE##_t tmp; \ + while (number != 0) { \ + if (p - data >= (dataLen - 1)) { return "Buffer too small"; } \ + tmp = number % 10; \ + tmp = tmp < 0 ? -tmp : tmp; \ + *(p++) = (char) ('0' + tmp); \ + number /= 10u; \ + } \ + while (p > data) { \ + p--; \ + char z = *data; *data = *p; *p = z; \ + data++; \ + } \ + return NULL; \ +} + +NUM_TO_STR(int32) + +NUM_TO_STR(int64) + +NUM_TO_STR(uint64) + +size_t z_strlen(const char *buffer, size_t maxSize); + +zxerr_t z_str3join(char *buffer, size_t bufferSize, const char *prefix, const char *suffix); + +__Z_INLINE void bip32_to_str(char *s, uint32_t max, const uint32_t *path, uint8_t pathLen) { + MEMZERO(s, max); + + if (pathLen == 0) { + snprintf(s, max, "EMPTY PATH"); + return; + } + + if (pathLen > 5) { + snprintf(s, max, "ERROR"); + return; + } + + uint32_t offset = 0; + for (uint16_t i = 0; i < pathLen; i++) { + size_t written; + + // Warning: overcomplicated because Ledger's snprintf does not return number of written bytes + + snprintf(s + offset, max - offset, "%d", path[i] & 0x7FFFFFFFu); + written = strnlen(s + offset, max - offset); + if (written == 0 || written >= max - offset) { + snprintf(s, max, "ERROR"); + return; + } + offset += written; + + if ((path[i] & 0x80000000u) != 0) { + snprintf(s + offset, max - offset, "'"); + written = strnlen(s + offset, max - offset); + if (written == 0 || written >= max - offset) { + snprintf(s, max, "ERROR"); + return; + } + offset += written; + } + + if (i != pathLen - 1) { + snprintf(s + offset, max - offset, "/"); + written = strnlen(s + offset, max - offset); + if (written == 0 || written >= max - offset) { + snprintf(s, max, "ERROR"); + return; + } + offset += written; + } + } +} + +__Z_INLINE void bip44_to_str(char *s, uint32_t max, const uint32_t path[5]) { + bip32_to_str(s, max, path, 5); +} + +__Z_INLINE int8_t str_to_int8(const char *start, const char *end, char *error) { + int sign = 1; + if (*start == '-') { + sign = -1; + start++; + } + + int64_t value = 0; + int multiplier = 1; + for (const char *s = end - 1; s >= start; s--) { + int delta = (*s - '0'); + if (delta >= 0 && delta <= 9) { + value += (delta * multiplier); + multiplier *= 10; + } else { + if (error != NULL) { + *error = 1; + return 0; + } + } + } + + value *= sign; + if (value >= INT8_MIN && value <= INT8_MAX) { + return (int8_t) value; + } + if (error != NULL) { + *error = 1; + } + return 0; +} + +__Z_INLINE int64_t str_to_int64(const char *start, const char *end, char *error) { + int sign = 1; + if (*start == '-') { + sign = -1; + start++; + } + + int64_t value = 0; + int64_t multiplier = 1; + for (const char *s = end - 1; s >= start; s--) { + int64_t delta = (*s - '0'); + if (delta >= 0 && delta <= 9) { + value += delta * multiplier; + multiplier *= 10; + } else { + if (error != NULL) { + *error = 1; + return 0; + } + } + } + + return value * sign; +} + +uint8_t intstr_to_fpstr_inplace(char *number, size_t number_max_size, uint8_t decimalPlaces); + +__Z_INLINE uint8_t fpstr_to_str(char *out, uint16_t outLen, const char *number, uint8_t decimals) { + MEMZERO(out, outLen); + size_t digits = strlen(number); + + if (decimals == 0) { + if (digits == 0) { + snprintf(out, outLen, "0"); + return 0; + } + + if (outLen < digits) { + snprintf(out, outLen, "ERR"); + return 1; + } + + // No need for formatting + snprintf(out, outLen, "%s", number); + return 0; + } + + if ((outLen < decimals + 2)) { + snprintf(out, outLen, "ERR"); + return 1; + } + + if (outLen < digits + 2) { + snprintf(out, outLen, "ERR"); + return 1; + } + + if (digits <= decimals) { + if (outLen <= decimals + 2) { + snprintf(out, outLen, "ERR"); + return 1; + } + + // First part + snprintf(out, outLen, "0."); + out += 2; + outLen -= 2; + + MEMSET(out, '0', decimals - digits); + out += decimals - digits; + outLen -= decimals - digits; + + snprintf(out, outLen, "%s", number); + return 0; + } + + const size_t shift = digits - decimals; + snprintf(out, outLen, "%s", number); + number += shift; + + out += shift; + outLen -= shift; + + *out++ = '.'; + outLen--; + snprintf(out, outLen, "%s", number); + return 0; +} + +__Z_INLINE uint16_t fpuint64_to_str(char *out, uint16_t outLen, const uint64_t value, uint8_t decimals) { + char buffer[30]; + MEMZERO(buffer, sizeof(buffer)); + uint64_to_str(buffer, sizeof(buffer), value); + fpstr_to_str(out, outLen, buffer, decimals); + return (uint16_t)strnlen(out, outLen); +} + +__Z_INLINE void number_inplace_trimming(char *s, uint8_t non_trimmed) { + const size_t len = strlen(s); + if (len == 0 || len == 1 || len > 1024) { + return; + } + + int16_t dec_point = -1; + for (int16_t i = 0; i < (int16_t) len && dec_point < 0; i++) { + if (s[i] == '.') { + dec_point = i; + } + } + if (dec_point < 0) { + return; + } + + const size_t limit = (size_t) dec_point + non_trimmed; + for (size_t i = (len - 1); i > limit && s[i] == '0'; i--) { + s[i] = 0; + } +} + +__Z_INLINE uint64_t uint64_from_BEarray(const uint8_t data[8]) { + uint64_t result = 0; + for (uint8_t i = 0; i < 8u; i++) { + result <<= 8u; + result += data[i]; + } + return result; +} + +__Z_INLINE uint32_t array_to_hexstr(char *dst, uint16_t dstLen, const uint8_t *src, uint16_t count) { + MEMZERO(dst, dstLen); + if (dstLen < (count * 2 + 1)) { + return 0; + } + + const char hexchars[] = "0123456789abcdef"; + for (uint16_t i = 0; i < count; i++, src++) { + *dst++ = hexchars[*src >> 4u]; + *dst++ = hexchars[*src & 0x0Fu]; + } + *dst = 0; // terminate string + + return (uint32_t) (count * 2); +} + +__Z_INLINE uint32_t array_to_hexstr_uppercase(char *dst, uint16_t dstLen, const uint8_t *src, uint16_t count) { + MEMZERO(dst, dstLen); + if (dstLen < (count * 2 + 1)) { + return 0; + } + + const char hexchars[] = "0123456789ABCDEF"; + for (uint16_t i = 0; i < count; i++, src++) { + *dst++ = hexchars[*src >> 4u]; + *dst++ = hexchars[*src & 0x0Fu]; + } + *dst = 0; // terminate string + + return (uint32_t) (count * 2); +} + +__Z_INLINE uint32_t hexstr_to_array(uint8_t *dst, uint16_t dstLen, const char *src, const uint16_t srcLen) { + MEMZERO(dst, dstLen); + if (srcLen % 2 != 0 || dstLen < srcLen/2) { + return 0; + } + + for (size_t i = 0; i < srcLen/2; i++) { + uint8_t ch0 = src[2 * i]; + uint8_t ch1 = src[2 * i + 1]; + uint8_t nib0 = (ch0 & 0xF) + (ch0 >> 6) | ((ch0 >> 3) & 0x8); + uint8_t nib1 = (ch1 & 0xF) + (ch1 >> 6) | ((ch1 >> 3) & 0x8); + dst[i] = (nib0 << 4) | nib1; + } + + return srcLen/2; +} + +__Z_INLINE zxerr_t to_uppercase(uint8_t *letter) { + if (letter == NULL) { + return zxerr_no_data; + } + //Check if lowercase letter + if(*letter >= 0x61 && *letter <= 0x7A) { + *letter = *letter - 0x20; + } + return zxerr_ok; +} + +__Z_INLINE zxerr_t to_lowercase(uint8_t *letter) { + if (letter == NULL) { + return zxerr_no_data; + } + //Check if uppercase letter + if(*letter >= 0x41 && *letter <= 0x5A) { + *letter = *letter + 0x20; + } + return zxerr_ok; +} + +__Z_INLINE zxerr_t array_to_uppercase(uint8_t *input, uint16_t inputLen) { + if (input == NULL) { + return zxerr_no_data; + } + + for (uint16_t i = 0; i < inputLen; i++) { + to_uppercase(input+i); + } + return zxerr_ok; +} + +__Z_INLINE zxerr_t array_to_lowercase(uint8_t *input, uint16_t inputLen) { + if (input == NULL) { + return zxerr_no_data; + } + + for (uint16_t i = 0; i < inputLen; i++) { + to_uppercase(input+i); + } + return zxerr_ok; +} + +__Z_INLINE void pageStringExt(char *outValue, uint16_t outValueLen, + const char *inValue, uint16_t inValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + MEMZERO(outValue, outValueLen); + *pageCount = 0; + + outValueLen--; // leave space for NULL termination + if (outValueLen == 0) { + return; + } + + if (inValueLen == 0) { + return; + } + + *pageCount = (uint8_t) (inValueLen / outValueLen); + const uint16_t lastChunkLen = (inValueLen % outValueLen); + + if (lastChunkLen > 0) { + (*pageCount)++; + } + + if (pageIdx < *pageCount) { + if (lastChunkLen > 0 && pageIdx == *pageCount - 1) { + MEMCPY(outValue, inValue + (pageIdx * outValueLen), lastChunkLen); + } else { + MEMCPY(outValue, inValue + (pageIdx * outValueLen), outValueLen); + } + } +} + +__Z_INLINE void pageString(char *outValue, uint16_t outValueLen, + const char *inValue, + uint8_t pageIdx, uint8_t *pageCount) { + pageStringExt(outValue, outValueLen, inValue, (uint16_t) strlen(inValue), pageIdx, pageCount); +} + +__Z_INLINE void pageStringHex(char *outValue, uint16_t outValueLen, + const char *inValue, uint16_t inValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + MEMZERO(outValue, outValueLen); + *pageCount = 0; + + //array_to_hexstr adds a null terminator + if (outValueLen < 2) { + return; + } + + if (inValueLen == 0) { + return; + } + // leaving space for null terminator + const uint16_t bytesPerPage = (outValueLen - 1) / 2; + *pageCount = (uint8_t) (inValueLen / bytesPerPage); + const uint16_t lastChunkLen = inValueLen % bytesPerPage; + + if (lastChunkLen > 0) { + (*pageCount)++; + } + + if (pageIdx < *pageCount) { + if (lastChunkLen > 0 && pageIdx == *pageCount - 1) { + array_to_hexstr(outValue, outValueLen, + (const uint8_t *)inValue + pageIdx * bytesPerPage, + lastChunkLen); + } else { + array_to_hexstr(outValue, outValueLen, + (const uint8_t *)inValue + pageIdx * bytesPerPage, + bytesPerPage); + } + } +} + +__Z_INLINE zxerr_t formatBufferData( + const uint8_t *ptr, + uint64_t len, + char *outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t *pageCount) { + char bufferUI[500 + 1]; + MEMZERO(bufferUI, sizeof(bufferUI)); + MEMZERO(outValue, 0); + CHECK_APP_CANARY() + + if (len >= sizeof(bufferUI)) { + return zxerr_buffer_too_small; + } + memcpy(bufferUI, ptr, len); + + // Check we have all ascii + uint8_t allAscii = 1; + for (size_t i = 0; i < len && allAscii; i++) { + if (bufferUI[i] < 32 || bufferUI[i] > 127) { + allAscii = 0; + } + } + + if (!allAscii) { + bufferUI[0] = '0'; + bufferUI[1] = 'x'; + if (array_to_hexstr(bufferUI + 2, sizeof(bufferUI) - 2, ptr, len) == 0) { + return zxerr_buffer_too_small; + } + } + + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + + return zxerr_ok; +} + +size_t asciify(char *utf8_in); + +size_t asciify_ext(const char *utf8_in, char *ascii_only_out); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/zxmacros.h b/deps/ledger-zxlib/include/zxmacros.h new file mode 100644 index 00000000..f0ce1817 --- /dev/null +++ b/deps/ledger-zxlib/include/zxmacros.h @@ -0,0 +1,132 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +#pragma clang diagnostic push +#pragma ide diagnostic ignored "modernize-use-nullptr" +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#pragma ide diagnostic ignored "modernize-deprecated-headers" + +extern "C" { +#endif + +#include +#include +#include +#include "string.h" + +// relatko: removed to make c unittests work +/*#ifndef __APPLE__ + +extern void explicit_bzero(void *s, size_t n) __THROW __nonnull ((1)); + +#endif*/ + +#define __Z_INLINE inline __attribute__((always_inline)) static +#define __Z_UNUSED __attribute__((unused)) +#define NV_ALIGN __attribute__ ((aligned(64))) + +#ifndef UNUSED +#define UNUSED(x) (void)x +#endif + +#if defined(LEDGER_SPECIFIC) +#include "bolos_target.h" +#endif + +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#include "zxmacros_ledger.h" +#else + +#include "zxmacros_x64.h" + +#endif + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define ZX_SWAP(v) (((v) & 0x000000FFu) << 24u | ((v) & 0x0000FF00u) << 8u | ((v) & 0x00FF0000u) >> 8u | ((v) & 0xFF000000u) >> 24u) +#define HtoNL(v) ZX_SWAP( v ) +#define NtoHL(v) ZX_SWAP( v ) +#else +#define HtoNL(x) (x) +#define NtoHL(x) (x) +#endif + +#define SET_NV(DST, TYPE, VAL) { \ + TYPE nvset_tmp=(VAL); \ + MEMCPY_NV((void*) PIC(DST), (void *) PIC(&nvset_tmp), sizeof(TYPE)); \ +} + +__Z_INLINE void strncpy_s(char *dst, const char *src, size_t dstSize) { + MEMZERO(dst, dstSize); + if(dstSize > 0) { + strncpy(dst, src, dstSize - 1); + } +} + +#define sizeof_field(type, member) sizeof(((type *)0)->member) +#define array_length(array) (sizeof(array) / sizeof((array)[0])) + +void zemu_trace(const char *file, uint32_t line); + +#define ZEMU_TRACE() zemu_trace( __func__, __LINE__ ); + +__attribute__((unused)) void check_app_canary(); + +void handle_stack_overflow(); + +void zemu_log_stack(const char *ctx); + +#define CHECK_PIN_VALIDATED() \ +if( os_global_pin_is_validated() != BOLOS_UX_OK ) { \ + THROW(APDU_CODE_COMMAND_NOT_ALLOWED); \ +} + +#if (defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX)) +#if defined(ZEMU_LOGGING) +__Z_INLINE void zemu_log(const char *buf) +{ +/* + asm volatile ( + "movs r0, #0x04\n" + "movs r1, %0\n" + "svc 0xab\n" + :: "r"(buf) : "r0", "r1" + ); +*/ + PRINTF(buf); +} +#else +__Z_INLINE void zemu_log(__Z_UNUSED const char *_) {} +#endif +#else +__Z_INLINE void zemu_log(__Z_UNUSED const char *msg) { + printf("%s\n", msg); +} +#endif + +#if defined(APP_TESTING) +#define ZEMU_LOGF(SIZE, ...) { char tmp[(SIZE)]; snprintf(tmp, (SIZE), __VA_ARGS__); zemu_log(tmp); } +#else +#define ZEMU_LOGF(SIZE, ...) {} +#endif + +#ifdef __cplusplus +} +#pragma clang diagnostic pop +#endif + diff --git a/deps/ledger-zxlib/include/zxmacros_ledger.h b/deps/ledger-zxlib/include/zxmacros_ledger.h new file mode 100644 index 00000000..7efaa37d --- /dev/null +++ b/deps/ledger-zxlib/include/zxmacros_ledger.h @@ -0,0 +1,89 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) + +#include "os.h" +#include "cx.h" +#include "os_io_seproxyhal.h" +#include "ux.h" + +#define MEMCPY_NV nvm_write + +// This macros are kept for backwards compatibility +// the most recent SDK has unified implementations and deprecated the original os_*** +#define MEMCPY memmove +#define MEMMOVE memmove +#define MEMSET memset +#define MEMCMP memcmp +#define MEMZERO explicit_bzero + +#define IS_UX_ALLOWED (G_ux_params.len != BOLOS_UX_IGNORE && G_ux_params.len != BOLOS_UX_CONTINUE) +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) +#define NV_CONST const +#define NV_VOLATILE volatile +#elif defined(TARGET_NANOS) +#define NV_CONST +#define NV_VOLATILE +#else +#define NV_CONST const +#define NV_VOLATILE volatile +#endif + +#define CHECK_APP_CANARY() check_app_canary(); +#define APP_STACK_CANARY_MAGIC 0xDEAD0031 +extern unsigned int app_stack_canary; + +#define WAIT_EVENT() io_seproxyhal_spi_recv(G_io_seproxyhal_spi_buffer, sizeof(G_io_seproxyhal_spi_buffer), 0) + +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) +#define UX_WAIT() \ + while (!UX_DISPLAYED()) { WAIT_EVENT(); UX_DISPLAY_NEXT_ELEMENT(); } \ + WAIT_EVENT(); \ + io_seproxyhal_general_status(); \ + WAIT_EVENT() +#else +#define UX_WAIT(){} +#endif + +// Macros for handling no-throw methods error check +#define CHECK_CXERROR(CALL) \ + do { \ + cx_err_t __cx_err = CALL; \ + if (__cx_err != CX_OK) { \ + return __cx_err; \ + } \ + } while (0) + + +#define CATCH_CXERROR(CALL) \ + do { \ + cx_err_t __cx_err = CALL; \ + if (__cx_err != CX_OK) { \ + goto catch_cx_error; \ + } \ + } while (0) + +#define CHECK_CX_OK(CALL) \ + do { \ + cx_err_t __cx_err = CALL; \ + if (__cx_err != CX_OK) { \ + return zxerr_unknown; \ + } \ + } while (0) + +#endif diff --git a/deps/ledger-zxlib/include/zxmacros_x64.h b/deps/ledger-zxlib/include/zxmacros_x64.h new file mode 100644 index 00000000..c3bb9184 --- /dev/null +++ b/deps/ledger-zxlib/include/zxmacros_x64.h @@ -0,0 +1,41 @@ +/******************************************************************************* +* (c) 2018 - 2023 Zondax AG +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#if !defined (TARGET_NANOS) && !defined(TARGET_NANOX) && !defined(TARGET_NANOS2) && !defined(TARGET_STAX) + +// This macros are kept for backwards compatibility +// the most recent SDK has unified implementations and deprecated the original os_*** +#define MEMMOVE memmove +#define MEMSET memset +#define MEMCPY memcpy +#define MEMCMP memcmp +#define MEMCPY_NV memcpy + +#define CX_OK 0 +#define PIC(x) (x) +#define CHECK_APP_CANARY() {} +#define CX_ECCINFO_PARITY_ODD 1u +#define CX_ECCINFO_xGTn 2u + +#ifndef __APPLE__ +#define MEMZERO explicit_bzero +#else +__Z_INLINE void __memzero(void *buffer, size_t s) { memset(buffer, 0, s); } +#define MEMZERO __memzero +#endif + +#endif diff --git a/deps/ledger-zxlib/include/zxtypes.h b/deps/ledger-zxlib/include/zxtypes.h new file mode 100644 index 00000000..9aae6770 --- /dev/null +++ b/deps/ledger-zxlib/include/zxtypes.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + bool_false = 0, + bool_true = 1, +} bool_t; + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/zxutils_ledger.h b/deps/ledger-zxlib/include/zxutils_ledger.h new file mode 100644 index 00000000..7d3fc051 --- /dev/null +++ b/deps/ledger-zxlib/include/zxutils_ledger.h @@ -0,0 +1,12 @@ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +unsigned short zx_compute_line_width_light(const char* text, unsigned char text_length); + + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/deps/ledger-zxlib/include/zxversion.h b/deps/ledger-zxlib/include/zxversion.h new file mode 100644 index 00000000..bb270d05 --- /dev/null +++ b/deps/ledger-zxlib/include/zxversion.h @@ -0,0 +1,20 @@ +/******************************************************************************* +* (c) 2018 - 2022 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#define ZXLIB_MAJOR 21 +#define ZXLIB_MINOR 0 +#define ZXLIB_PATCH 2 diff --git a/deps/ledger-zxlib/makefiles/Makefile.app_testing b/deps/ledger-zxlib/makefiles/Makefile.app_testing new file mode 100644 index 00000000..9b694929 --- /dev/null +++ b/deps/ledger-zxlib/makefiles/Makefile.app_testing @@ -0,0 +1,22 @@ +#******************************************************************************* +# Ledger App +# (c) 2018 - 2023 Zondax AG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +ifeq ($(APP_TESTING),1) +DEFINES += APP_TESTING +DEFINES += ZEMU_LOGGING +$(info ************ LOGGING ENABLED ************) +endif diff --git a/deps/ledger-zxlib/makefiles/Makefile.c_app b/deps/ledger-zxlib/makefiles/Makefile.c_app new file mode 100644 index 00000000..38473034 --- /dev/null +++ b/deps/ledger-zxlib/makefiles/Makefile.c_app @@ -0,0 +1,28 @@ +#******************************************************************************* +# Ledger App +# (c) 2018 - 2023 Zondax AG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +.PHONY: rust +rust: + @echo "No rust code" +# cd rust && CARGO_HOME="$(CURDIR)/rust/.cargo" cargo build --target thumbv6m-none-eabi --release + +.PHONY: rust_clean +rust_clean: + @echo "No rust code" +# cd rust && CARGO_HOME="$(CURDIR)/rust/.cargo" cargo clean + +clean: rust_clean diff --git a/deps/ledger-zxlib/makefiles/Makefile.devices b/deps/ledger-zxlib/makefiles/Makefile.devices new file mode 100644 index 00000000..46f0faba --- /dev/null +++ b/deps/ledger-zxlib/makefiles/Makefile.devices @@ -0,0 +1,67 @@ +#******************************************************************************* +# Ledger App +# (c) 2018 - 2023 Zondax AG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +ifeq ($(TARGET_NAME),TARGET_NANOS) +ifeq ($(HAVE_SWAP),1) +APP_LOAD_PARAMS += --appFlags 0x800 +else +APP_LOAD_PARAMS += --appFlags 0x000 +endif + +ifeq ($(NANOS_STACK_SIZE),) +APP_STACK_SIZE:=3150 +else +APP_STACK_SIZE:= $(NANOS_STACK_SIZE) +endif + +ICONNAME:=$(CURDIR)/nanos_icon.gif +OUTPUT_ELF ?= $(CURDIR)/output/app_s.elf +OUTPUT_INSTALLER := $(CURDIR)/pkg/installer_s.sh +endif + +ifeq ($(TARGET_NAME),TARGET_NANOX) +ifeq ($(HAVE_SWAP),1) +APP_LOAD_PARAMS += --appFlags 0xA00 +else +APP_LOAD_PARAMS += --appFlags 0x200 +endif +ICONNAME:=$(CURDIR)/nanox_icon.gif +OUTPUT_ELF ?= $(CURDIR)/output/app_x.elf +OUTPUT_INSTALLER:= $(CURDIR)/pkg/installer_x.sh +endif + +ifeq ($(TARGET_NAME),TARGET_NANOS2) +ifeq ($(HAVE_SWAP),1) +APP_LOAD_PARAMS += --appFlags 0x800 +else +APP_LOAD_PARAMS += --appFlags 0x000 +endif +ICONNAME:=$(CURDIR)/nanox_icon.gif +OUTPUT_ELF ?= $(CURDIR)/output/app_s2.elf +OUTPUT_INSTALLER:= $(CURDIR)/pkg/installer_s2.sh +endif + +ifeq ($(TARGET_NAME),TARGET_STAX) +ifeq ($(HAVE_SWAP),1) +APP_LOAD_PARAMS += --appFlags 0xA00 +else +APP_LOAD_PARAMS += --appFlags 0x200 +endif +ICONNAME:=$(CURDIR)/stax_icon.gif +OUTPUT_ELF ?= $(CURDIR)/output/app_stax.elf +OUTPUT_INSTALLER:= $(CURDIR)/pkg/installer_stax.sh +endif diff --git a/deps/ledger-zxlib/makefiles/Makefile.installer_script b/deps/ledger-zxlib/makefiles/Makefile.installer_script new file mode 100644 index 00000000..147104c5 --- /dev/null +++ b/deps/ledger-zxlib/makefiles/Makefile.installer_script @@ -0,0 +1,32 @@ +#******************************************************************************* +# Ledger App +# (c) 2018 - 2023 Zondax AG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +all: default + @echo "#!/usr/bin/env bash" > $(OUTPUT_INSTALLER) + @echo "APPNAME=\"${APPNAME}\"" >> $(OUTPUT_INSTALLER) + @echo "APPVERSION=\"${APPVERSION}\"" >> $(OUTPUT_INSTALLER) + @echo "APPPATH=\""${APPPATH}"\"" >> $(OUTPUT_INSTALLER) + @echo "LOAD_PARAMS=($$(echo "${APP_LOAD_PARAMS}" | sed -e "s|"${APPNAME}"|\""${APPNAME}"\"|"))" >> $(OUTPUT_INSTALLER) + @echo "DELETE_PARAMS=($$(echo "${COMMON_DELETE_PARAMS}" | sed -e "s|"${APPNAME}"|\""${APPNAME}"\"|"))" >> $(OUTPUT_INSTALLER) + @echo "APPHEX=\"" >> $(OUTPUT_INSTALLER) + @cat $(CURDIR)/bin/app.hex >> $(OUTPUT_INSTALLER) + @echo "\"" >> $(OUTPUT_INSTALLER) + @cat $(CURDIR)/../deps/ledger-zxlib/scripts/template.sh >> $(OUTPUT_INSTALLER) + @chmod +x $(OUTPUT_INSTALLER) + @cp $(CURDIR)/bin/* $(CURDIR)/output + @cp $(CURDIR)/output/app.elf ${OUTPUT_ELF} + @rm $(CURDIR)/output/app.elf diff --git a/deps/ledger-zxlib/makefiles/Makefile.platform b/deps/ledger-zxlib/makefiles/Makefile.platform new file mode 100644 index 00000000..d2061aeb --- /dev/null +++ b/deps/ledger-zxlib/makefiles/Makefile.platform @@ -0,0 +1,117 @@ +#******************************************************************************* +# Ledger App +# (c) 2018 - 2023 Zondax AG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +############ +# Platform + +DEFINES += PRINTF\(...\)= + +APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) +DEFINES += APPVERSION=\"$(APPVERSION)\" + +DEFINES += OS_IO_SEPROXYHAL +DEFINES += HAVE_SPRINTF +DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=7 IO_HID_EP_LENGTH=64 HAVE_USB_APDU + +DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M) LEDGER_MINOR_VERSION=$(APPVERSION_N) LEDGER_PATCH_VERSION=$(APPVERSION_P) + +DEFINES += USB_SEGMENT_SIZE=64 +DEFINES += HAVE_BOLOS_APP_STACK_CANARY + +DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" + +ifeq ($(TARGET_NAME),TARGET_NANOS) +# Nano S + DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128 + DEFINES += HAVE_BAGL +else ifeq ($(TARGET_NAME),TARGET_STAX) +# Stax + DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 + DEFINES += NBGL_QRCODE + SDK_SOURCE_PATH += qrcode + +# Required by SDK + DEFINES += UNUSED\(x\)=\(void\)x +else +# Nano X/S+ +DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 + +DEFINES += HAVE_GLO096 +DEFINES += HAVE_BAGL BAGL_WIDTH=128 BAGL_HEIGHT=64 +DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX +DEFINES += HAVE_UX_FLOW +endif + +BLE_TARGETS := TARGET_STAX TARGET_NANOX +ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME), $(BLE_TARGETS))) +# X/Stax specific +DEFINES += HAVE_BLE +DEFINES += HAVE_BLE_APDU BLE_COMMAND_TIMEOUT_MS=2000 + +SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl +endif + +#Feature temporarily disabled +DEFINES += LEDGER_SPECIFIC + +# Compiler, assembler, and linker + +ifneq ($(BOLOS_ENV),) +$(info BOLOS_ENV is $(BOLOS_ENV)) +CLANGPATH := /usr/bin/ +GCCPATH := /usr/bin/ +else +$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) +endif + +ifeq ($(CLANGPATH),) +$(info CLANGPATH is not set: clang will be used from PATH) +endif + +ifeq ($(GCCPATH),) +$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) +endif + +######################### + +CC := $(CLANGPATH)clang + +AS := $(GCCPATH)arm-none-eabi-gcc +AFLAGS += + +LD := $(GCCPATH)arm-none-eabi-gcc +LDLIBS += -lm -lgcc -lc + +########################## +include $(BOLOS_SDK)/Makefile.glyphs + +APP_SOURCE_PATH += $(CURDIR)/src + +ZXLIB_DIR := $(CURDIR)/../deps/ledger-zxlib/ +APP_SOURCE_PATH += $(ZXLIB_DIR)/include +APP_SOURCE_PATH += $(ZXLIB_DIR)/src +APP_SOURCE_PATH += $(ZXLIB_DIR)/app/common +APP_SOURCE_PATH += $(ZXLIB_DIR)/app/ui + +SDK_SOURCE_PATH += lib_stusb lib_stusb_impl + +ifneq ($(TARGET_NAME),TARGET_STAX) + SDK_SOURCE_PATH += lib_ux +endif diff --git a/deps/ledger-zxlib/makefiles/Makefile.side_loading b/deps/ledger-zxlib/makefiles/Makefile.side_loading new file mode 100644 index 00000000..f13fba01 --- /dev/null +++ b/deps/ledger-zxlib/makefiles/Makefile.side_loading @@ -0,0 +1,25 @@ +#******************************************************************************* +# Ledger App +# (c) 2018 - 2023 Zondax AG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +# load, delete and listvariants are provided to comply with Ledger requirements +.PHONY: load +load: + python3 -m ledgerblue.loadApp $(APP_LOAD_PARAMS) + +.PHONY: delete +delete: + python3 -m ledgerblue.deleteApp $(COMMON_DELETE_PARAMS) diff --git a/deps/ledger-zxlib/scripts/getSize.py b/deps/ledger-zxlib/scripts/getSize.py new file mode 100755 index 00000000..e1ef82ab --- /dev/null +++ b/deps/ledger-zxlib/scripts/getSize.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 + +from math import ceil +from os import path +from sys import argv + +from ledgerblue.hexParser import IntelHexParser + +model = argv[1] if len(argv) != 1 else "nanos" +if model == "s" or model == "s2" or model == "x": + model = "nano" + model +hex_path = "app/build/" + model + "/bin/app.hex" +block_size = 32 # nanosp and stax +if model == "nanos": + block_size = 2048 +elif model == "nanox": + block_size = 4096 + +if not path.isfile(hex_path): + raise ValueError("hex file not found in" + hex_path) + +parser = IntelHexParser(hex_path) +bytes = parser.maxAddr() - parser.minAddr() +size_in_bytes = ceil(bytes / block_size) * block_size +print(ceil(size_in_bytes / 1024)) # in KiB diff --git a/deps/ledger-zxlib/scripts/get_version.sh b/deps/ledger-zxlib/scripts/get_version.sh new file mode 100755 index 00000000..678fa9fb --- /dev/null +++ b/deps/ledger-zxlib/scripts/get_version.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +zxpath="$(dirname "$0")/../include/zxversion.h" +version_numbers=$(sed '/[0-9]/!d; /*/d; s/[A-Za-z#_ ]//g' "$zxpath" | tr '\n' '.') +echo "v${version_numbers%?}" # %? stands for removing the last character of the file as `tr` adds an extra `.` diff --git a/deps/ledger-zxlib/scripts/install_deps.sh b/deps/ledger-zxlib/scripts/install_deps.sh new file mode 100755 index 00000000..6cea8ea0 --- /dev/null +++ b/deps/ledger-zxlib/scripts/install_deps.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +#******************************************************************************* +#* (c) 2018 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +os_string="$(uname -s)" +case "${os_string}" in + Linux*) + sudo apt-get install libusb-1.0.0 libudev-dev + pip install -U setuptools + pip install -U --no-cache ledgerblue ecpy + pip install -U conan~=1.59 + ;; + Darwin*) + brew install libusb + pip install -U ledgerblue ecpy + pip install -U conan~=1.59 + ;; + *) + echo "OS not recognized" + ;; +esac diff --git a/deps/ledger-zxlib/scripts/template.sh b/deps/ledger-zxlib/scripts/template.sh new file mode 100755 index 00000000..1d0a5044 --- /dev/null +++ b/deps/ledger-zxlib/scripts/template.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +#******************************************************************************* +# (c) 2018 Zondax GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +if [ -z "$APPNAME" ] +then + echo "This script has not been configured correctly" + exit 1 +fi + +# check python 3 has been installed +if ! command -v python3 &>/dev/null; then + echo Python 3 is not installed + exit +fi + +python3 -m ledgerblue.loadApp -h &>/dev/null; +if [ $? -ne 0 ]; then + echo + echo "ERR: ledgerblue pip package not found." + echo "please install using 'pip install ledgerblue'" + echo + exit +fi + +TMP_HEX_DIR=$(mktemp -d -t ci-XXXXXXXXXX) +mkdir -p ${TMP_HEX_DIR}/bin +BIN_HEX_FILE=${TMP_HEX_DIR}/bin/app.hex +echo -e "${APPHEX}" > ${BIN_HEX_FILE} + +case "$1" in + 'load') + cd "$TMP_HEX_DIR" || exit + python3 -m ledgerblue.loadApp "${LOAD_PARAMS[@]}" --path ${APPPATH} --path "44'/1'" + ;; + 'delete') + python3 -m ledgerblue.deleteApp "${DELETE_PARAMS[@]}" + ;; + 'version') + echo "v${APPVERSION}" + ;; + *) + echo "Zondax Installer [$APPNAME-$APPVERSION] [Warning: use only for test/demo apps]" + echo " load - Load $APPNAME app" + echo " delete - Delete $APPNAME app" + echo " version - Show $APPNAME app version" +esac diff --git a/deps/ledger-zxlib/src/app_mode.c b/deps/ledger-zxlib/src/app_mode.c new file mode 100644 index 00000000..365c75f4 --- /dev/null +++ b/deps/ledger-zxlib/src/app_mode.c @@ -0,0 +1,118 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_mode.h" + +typedef struct { + uint8_t expert; + uint8_t account; +} app_mode_persistent_t; + +typedef struct { + uint8_t secret; + uint8_t shortcut; +} app_mode_temporary_t; + +app_mode_temporary_t app_mode_temporary; + +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +app_mode_persistent_t NV_CONST N_appmode_impl __attribute__ ((aligned(64))); +#define N_appmode (*(NV_VOLATILE app_mode_persistent_t *)PIC(&N_appmode_impl)) + +void app_mode_reset(){ + app_mode_temporary.secret = 0; + app_mode_temporary.shortcut = 0; +} + +bool app_mode_expert() { + return N_appmode.expert; +} + +bool app_mode_account() { + return N_appmode.account; +} + +void app_mode_set_expert(uint8_t val) { + app_mode_persistent_t mode; + mode.expert = val; + mode.account = N_appmode.account; + MEMCPY_NV( (void*) PIC(&N_appmode_impl), (void*) &mode, sizeof(app_mode_persistent_t)); +} + +void app_mode_set_account(uint8_t val) { + app_mode_persistent_t mode; + mode.expert = N_appmode.expert; + mode.account = val; + MEMCPY_NV( (void*) PIC(&N_appmode_impl), (void*) &mode, sizeof(app_mode_persistent_t)); +} + +#else +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// + +app_mode_persistent_t app_mode; + +void app_mode_reset() { + app_mode.expert = 0; + app_mode.account = 0; + app_mode_temporary.secret = 0; + app_mode_temporary.shortcut = 0; +} + +bool app_mode_expert() { + return app_mode.expert; +} + +bool app_mode_account() { + return app_mode.account; +} + +void app_mode_set_expert(uint8_t val) { + app_mode.expert = val; +} + +void app_mode_set_account(uint8_t val) { + app_mode.account = val; +} + +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// + +#endif + +bool app_mode_secret() { + return app_mode_temporary.secret; +} + +void app_mode_set_secret(uint8_t val) { + app_mode_temporary.secret = val; +} + +bool app_mode_shortcut() { + return app_mode_temporary.shortcut; +} + +void app_mode_set_shortcut(uint8_t val) { + app_mode_temporary.shortcut = val; +} diff --git a/deps/ledger-zxlib/src/base64.c b/deps/ledger-zxlib/src/base64.c new file mode 100644 index 00000000..ad601f8c --- /dev/null +++ b/deps/ledger-zxlib/src/base64.c @@ -0,0 +1,71 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include "base64.h" + +#define BASE64_PADDING_CHAR '=' + +const char base64_charset[] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', +}; + +uint16_t base64_encode(char *out, uint16_t outlen, const uint8_t *in, uint16_t inlen) { + MEMZERO(out, outlen); + + // Check uppeer bound or bailout + uint16_t minspace = inlen / 6; + if (inlen % 6 != 0) minspace++; + minspace++; // zero termination + if (outlen < minspace) { + return 0; + } + + int8_t carry_count = 0; + uint8_t carry_value = 0; + uint16_t out_idx = 0; + + for (uint16_t i = 0; i < inlen; i++) { + const uint8_t c = in[i]; + + const uint8_t shift = (6 - carry_count); + const uint8_t idx = (carry_value << shift) | (c >> (carry_count + 2)); + carry_value = c & (0xFFu >> shift); + carry_count += 2; + + out[out_idx++] = base64_charset[idx]; + + // Check if we have another complete byte ready + if (carry_count == 6) { + out[out_idx++] = base64_charset[carry_value]; + carry_value = 0; + carry_count = 0; + } + } + + // If there is any left over add and pad + if (carry_count > 0) { + out[out_idx++] = base64_charset[carry_value << (6 - carry_count)]; + while (carry_count < 6) { + out[out_idx++] = BASE64_PADDING_CHAR; + carry_count += 2; + } + } + + return out_idx; +} diff --git a/deps/ledger-zxlib/src/bech32.c b/deps/ledger-zxlib/src/bech32.c new file mode 100644 index 00000000..5158abcf --- /dev/null +++ b/deps/ledger-zxlib/src/bech32.c @@ -0,0 +1,59 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include +#include +#include "bech32.h" +#include "segwit_addr.h" +#include "bittools.h" + +zxerr_t bech32EncodeFromBytes(char *out, + size_t out_len, + const char *hrp, + const uint8_t *in, + size_t in_len, + uint8_t pad, + bech32_encoding enc) { + MEMZERO(out, out_len); + + if (in_len > MAX_INPUT_SIZE) { + return zxerr_out_of_bounds; + } + + size_t hrplen = strlen(hrp); + // We set a lower bound to ensure this is safe + if (out_len < hrplen + (in_len * 2) + 7) { + return zxerr_buffer_too_small; + } + + // Overestimate required size *2==(8/4) instead of *(8/5) + uint8_t tmp_data[MAX_INPUT_SIZE * 2]; + size_t tmp_size = 0; + MEMZERO(tmp_data, sizeof(tmp_data)); + + convert_bits(tmp_data, &tmp_size, 5, in, in_len, 8, pad); + if (tmp_size >= out_len) { + return zxerr_out_of_bounds; + } + + int err = bech32_encode(out, hrp, tmp_data, tmp_size, enc); + if (err == 0) { + return zxerr_encoding_failed; + } + + return zxerr_ok; +} diff --git a/deps/ledger-zxlib/src/bignum.c b/deps/ledger-zxlib/src/bignum.c new file mode 100644 index 00000000..189a7d5c --- /dev/null +++ b/deps/ledger-zxlib/src/bignum.c @@ -0,0 +1,148 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxtypes.h" +#include "bignum.h" + +bool_t bignumLittleEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, + const uint8_t *inBCD, uint16_t inBCDLen) { + static const char hexchars[] = "0123456789ABCDEF"; + uint8_t started = 0; + MEMZERO(outBuffer, outBufferLen); + + if (outBufferLen < 4) { + return bool_false; + } + + if (inBCDLen * 2 > outBufferLen) { + snprintf(outBuffer, outBufferLen, "ERR"); + return bool_false; + } + + for (uint16_t i = 0; i < inBCDLen; i++, inBCD++) { + if (started || *inBCD != 0) { + if (started || (*inBCD >> 4u) != 0) { + *outBuffer = hexchars[*inBCD >> 4u]; + outBuffer++; + } + *outBuffer = hexchars[*inBCD & 0x0Fu]; + outBuffer++; + started = 1; + } + } + + if (!started) { + snprintf(outBuffer, outBufferLen, "0"); + } + + return bool_true; +} + +void bignumLittleEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, + const uint8_t *binValue, uint16_t binValueLen) { + MEMZERO(bcdOut, bcdOutLen); + + uint8_t carry = 0; + for (uint32_t bitIdx = 0; bitIdx < binValueLen * 8; bitIdx++) { + // Fix bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + if ((bcdOut[j] & 0x0Fu) > 0x04u) { + bcdOut[j] += 0x03u; + } + if ((bcdOut[j] & 0xF0u) > 0x40u) { + bcdOut[j] += 0x30u; + } + } + + // get bit + const uint16_t byteIdx = bitIdx >> 3u; + const uint8_t mask = 0x80u >> (bitIdx & 0x7u); + carry = (uint8_t) ((binValue[binValueLen - byteIdx - 1] & mask) > 0); + + // Shift bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + uint8_t carry2 = (uint8_t) (bcdOut[bcdOutLen - j - 1] > 127u); + bcdOut[bcdOutLen - j - 1] <<= 1u; + bcdOut[bcdOutLen - j - 1] += carry; + carry = carry2; + } + } +} + +bool_t bignumBigEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, + const uint8_t *bcdIn, uint16_t bcdInLen) { + static const char hexchars[] = "0123456789ABCDEF"; + uint8_t started = 0; + MEMZERO(outBuffer, outBufferLen); + + if (outBufferLen < 4) { + return bool_false; + } + + if (bcdInLen * 2 > outBufferLen) { + snprintf(outBuffer, outBufferLen, "ERR"); + return bool_false; + } + + for (uint16_t i = 0; i < bcdInLen; i++) { + uint8_t v = bcdIn[bcdInLen - i - 1]; + if (started || v != 0) { + if (started || (v >> 4u) != 0) { + *outBuffer = hexchars[v >> 4u]; + outBuffer++; + } + *outBuffer = hexchars[v & 0x0Fu]; + outBuffer++; + started = 1; + } + } + + if (!started) { + snprintf(outBuffer, outBufferLen, "0"); + } + + return bool_true; +} + +void bignumBigEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, + const uint8_t *binValue, uint16_t binValueLen) { + MEMZERO(bcdOut, bcdOutLen); + + uint8_t carry = 0; + for (uint32_t bitIdx = 0; bitIdx < binValueLen * 8; bitIdx++) { + // Fix bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + if ((bcdOut[j] & 0x0Fu) > 0x04u) { + bcdOut[j] += 0x03u; + } + if ((bcdOut[j] & 0xF0u) > 0x40u) { + bcdOut[j] += 0x30u; + } + } + + // get bit + const uint16_t byteIdx = bitIdx >> 3u; + const uint8_t mask = 0x80u >> (bitIdx & 0x7u); + carry = (uint8_t) ((binValue[byteIdx] & mask) > 0); + + // Shift bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + uint8_t carry2 = (uint8_t) (bcdOut[j] > 127u); + bcdOut[j] <<= 1u; + bcdOut[j] += carry; + carry = carry2; + } + } +} diff --git a/deps/ledger-zxlib/src/buffering.c b/deps/ledger-zxlib/src/buffering.c new file mode 100644 index 00000000..b72d7eb8 --- /dev/null +++ b/deps/ledger-zxlib/src/buffering.c @@ -0,0 +1,95 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "buffering.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +buffer_state_t ram; // Ram +buffer_state_t flash; // Flash + +void buffering_init(uint8_t *ram_buffer, + uint16_t ram_buffer_size, + uint8_t *flash_buffer, + uint16_t flash_buffer_size) { + ram.data = ram_buffer; + ram.size = ram_buffer_size; + ram.pos = 0; + ram.in_use = 1; + + flash.data = flash_buffer; + flash.size = flash_buffer_size; + flash.pos = 0; + flash.in_use = 0; +} + +void buffering_reset() { + ram.pos = 0; + ram.in_use = 1; + flash.pos = 0; + flash.in_use = 0; +} + +uint32_t buffering_append(uint8_t *data, uint32_t length) { + if (ram.in_use) { + if (ram.size - ram.pos >= length) { + // RAM in use, append to ram if there is enough space + MEMCPY(ram.data + ram.pos, data, (size_t) length); + ram.pos += length; + } else { + // If RAM is not big enough copy memory to flash + ram.in_use = 0; + flash.in_use = 1; + if (ram.pos > 0) { + buffering_append(ram.data, ram.pos); + } + int num_bytes = buffering_append(data, length); + ram.pos = 0; + return num_bytes; + } + } else { + // Flash in use, append to flash + if (flash.size - flash.pos >= length) { + MEMCPY_NV(flash.data + flash.pos, data, (size_t) length); + flash.pos += length; + } else { + return 0; + } + } + return length; +} + +buffer_state_t *buffering_get_ram_buffer() { + return &ram; +} + +buffer_state_t *buffering_get_flash_buffer() { + return &flash; +} + +buffer_state_t *buffering_get_buffer() { + if (ram.in_use) { + return &ram; + } + return &flash; +} + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/src/hexutils.c b/deps/ledger-zxlib/src/hexutils.c new file mode 100644 index 00000000..66b80894 --- /dev/null +++ b/deps/ledger-zxlib/src/hexutils.c @@ -0,0 +1,57 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include +#include "hexutils.h" + +uint8_t hex2dec(char c, char *out) { + c = (char) tolower((int) c); + + if (!isxdigit((int) c)) { + return 1; + } + + if (isdigit((int) c)) { + *out = (char) (c - '0'); + return 0; + } + + *out = (char) (c - 'a' + 10); + return 0; +} + +size_t parseHexString(uint8_t *out, uint16_t outLen, const char *input) { + size_t len = strnlen(input, outLen * 2u + 1u); + if ( (len / 2) > outLen) { + return 0; + } + if (len % 2 == 1) { + return 0; + } + + for (size_t i = 0; i < len; i += 2) { + char tmp1, tmp2; + if (hex2dec(input[i], &tmp1)) + return 0; + if (hex2dec(input[i + 1], &tmp2)) + return 0; + + out[i >> 1u] = (tmp1 << 4u) + tmp2; + } + + return (len / 2); +} diff --git a/deps/ledger-zxlib/src/segwit_addr.c b/deps/ledger-zxlib/src/segwit_addr.c new file mode 100644 index 00000000..93aa1ab0 --- /dev/null +++ b/deps/ledger-zxlib/src/segwit_addr.c @@ -0,0 +1,208 @@ +/* Copyright (c) 2017 Pieter Wuille + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include +#include +#include + +#include "segwit_addr.h" + +uint32_t bech32_polymod_step(uint32_t pre) { + uint8_t b = pre >> 25u; + return ((pre & 0x1FFFFFFu) << 5u) ^ + (-((b >> 0u) & 1u) & 0x3b6a57b2UL) ^ + (-((b >> 1u) & 1u) & 0x26508e6dUL) ^ + (-((b >> 2u) & 1u) & 0x1ea119faUL) ^ + (-((b >> 3u) & 1u) & 0x3d4233ddUL) ^ + (-((b >> 4u) & 1u) & 0x2a1462b3UL); +} + +static uint32_t bech32_final_constant(bech32_encoding enc) { + if (enc == BECH32_ENCODING_BECH32) return 1; + if (enc == BECH32_ENCODING_BECH32M) return 0x2bc830a3; + return 0; +} + +static const char* charset = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; + +static const int8_t charset_rev[128] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, -1, 10, 17, 21, 20, 26, 30, 7, 5, -1, -1, -1, -1, -1, -1, + -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, + 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1, + -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, + 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1 +}; + +int bech32_encode(char *output, const char *hrp, const uint8_t *data, size_t data_len, bech32_encoding enc) { + uint32_t chk = 1; + size_t i = 0; + while (hrp[i] != 0) { + char ch = hrp[i]; + if (ch < 33 || ch > 126) { + return 0; + } + + if (ch >= 'A' && ch <= 'Z') return 0; + chk = bech32_polymod_step(chk) ^ (ch >> 5u); + ++i; + } + if (i + 7 + data_len > 90) return 0; + chk = bech32_polymod_step(chk); + while (*hrp != 0) { + chk = bech32_polymod_step(chk) ^ (*hrp & 0x1fu); + *(output++) = *(hrp++); + } + *(output++) = '1'; + for (i = 0; i < data_len; ++i) { + if (*data >> 5u) return 0; + chk = bech32_polymod_step(chk) ^ (*data); + *(output++) = charset[*(data++)]; + } + for (i = 0; i < 6; ++i) { + chk = bech32_polymod_step(chk); + } + chk ^= bech32_final_constant(enc); + for (i = 0; i < 6; ++i) { + *(output++) = charset[(chk >> ((5u - i) * 5u)) & 0x1fu]; + } + *output = 0; + return 1; +} + +bech32_encoding bech32_decode(char* hrp, uint8_t *data, size_t *data_len, const char *input) { + uint32_t chk = 1; + size_t i; + size_t input_len = strlen(input); + size_t hrp_len; + int have_lower = 0, have_upper = 0; + if (input_len < 8 || input_len > 90) { + return 0; + } + *data_len = 0; + while (*data_len < input_len && input[(input_len - 1) - *data_len] != '1') { + ++(*data_len); + } + hrp_len = input_len - (1 + *data_len); + if (1 + *data_len >= input_len || *data_len < 6) { + return 0; + } + *(data_len) -= 6; + for (i = 0; i < hrp_len; ++i) { + char ch = input[i]; + if (ch < 33 || ch > 126) { + return 0; + } + if (ch >= 'a' && ch <= 'z') { + have_lower = 1; + } else if (ch >= 'A' && ch <= 'Z') { + have_upper = 1; + ch = (ch - 'A') + 'a'; + } + hrp[i] = ch; + chk = bech32_polymod_step(chk) ^ (ch >> 5u); + } + hrp[i] = 0; + chk = bech32_polymod_step(chk); + for (i = 0; i < hrp_len; ++i) { + chk = bech32_polymod_step(chk) ^ (input[i] & 0x1fu); + } + ++i; + while (i < input_len) { + int v = (input[i] & 0x80u) ? -1 : charset_rev[(int)input[i]]; + if (input[i] >= 'a' && input[i] <= 'z') have_lower = 1; + if (input[i] >= 'A' && input[i] <= 'Z') have_upper = 1; + if (v == -1) { + return 0; + } + chk = bech32_polymod_step(chk) ^ v; + if (i + 6 < input_len) { + data[i - (1 + hrp_len)] = v; + } + ++i; + } + if (have_lower && have_upper) { + return BECH32_ENCODING_NONE; + } + if (chk == bech32_final_constant(BECH32_ENCODING_BECH32)) { + return BECH32_ENCODING_BECH32; + } else if (chk == bech32_final_constant(BECH32_ENCODING_BECH32M)) { + return BECH32_ENCODING_BECH32M; + } else { + return BECH32_ENCODING_NONE; + } +} + +int convert_bits(uint8_t* out, size_t* outlen, int outBits, const uint8_t* in, size_t inLen, int inBits, int pad) { + uint32_t val = 0; + int bits = 0; + uint32_t maxv = (((uint32_t)1u) << outBits) - 1u; + while (inLen--) { + val = (val << inBits) | *(in++); + bits += inBits; + while (bits >= outBits) { + bits -= outBits; + out[(*outlen)++] = (val >> bits) & maxv; + } + } + if (pad) { + if (bits) { + out[(*outlen)++] = (val << (outBits - bits)) & maxv; + } + } else if (((val << (outBits - bits)) & maxv) || bits >= inBits) { + return 0; + } + return 1; +} + +int segwit_addr_encode(char *output, const char *hrp, int witver, const uint8_t *witprog, size_t witprog_len) { + uint8_t data[65]; + size_t datalen = 0; + bech32_encoding enc = BECH32_ENCODING_BECH32; + if (witver > 16) return 0; + if (witver == 0 && witprog_len != 20 && witprog_len != 32) return 0; + if (witprog_len < 2 || witprog_len > 40) return 0; + if (witver > 0) enc = BECH32_ENCODING_BECH32M; + data[0] = witver; + convert_bits(data + 1, &datalen, 5, witprog, witprog_len, 8, 1); + ++datalen; + return bech32_encode(output, hrp, data, datalen, enc); +} + +int segwit_addr_decode(int* witver, uint8_t* witdata, size_t* witdata_len, const char* hrp, const char* addr) { + uint8_t data[84]; + char hrp_actual[84]; + size_t data_len; + bech32_encoding enc = bech32_decode(hrp_actual, data, &data_len, addr); + if (enc == BECH32_ENCODING_NONE) return 0; + if (data_len == 0 || data_len > 65) return 0; + if (strncmp(hrp, hrp_actual, 84) != 0) return 0; + if (data[0] > 16) return 0; + if (data[0] == 0 && enc != BECH32_ENCODING_BECH32) return 0; + if (data[0] > 0 && enc != BECH32_ENCODING_BECH32M) return 0; + *witdata_len = 0; + if (!convert_bits(witdata, witdata_len, 8, data + 1, data_len - 1, 5, 0)) return 0; + if (*witdata_len < 2 || *witdata_len > 40) return 0; + if (data[0] == 0 && *witdata_len != 20 && *witdata_len != 32) return 0; + *witver = data[0]; + return 1; +} diff --git a/deps/ledger-zxlib/src/sigutils.c b/deps/ledger-zxlib/src/sigutils.c new file mode 100644 index 00000000..107088fd --- /dev/null +++ b/deps/ledger-zxlib/src/sigutils.c @@ -0,0 +1,115 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include + +#define MINPAYLOADLEN 1 +#define PAYLOADLEN 32 +#define MAXPAYLOADLEN 33 + +err_convert_e convertDERtoRSV(const uint8_t *inSignatureDER, + unsigned int inInfo, + uint8_t *outR, + uint8_t *outS, + uint8_t *outV) { + + // https://github.com/libbitcoin/libbitcoin-system/wiki/ECDSA-and-DER-Signatures#serialised-der-signature-sequence + // 0 [1 byte] - DER Prefix + // 1 [1 byte] - Payload len + // 2 [1 byte] - R Marker. Always 02 + // 3 [1 byte] - R Len RLEN + // ROFFSET ... [.?. byte] - R ROFFSET + // ROFFSET+RLEN [1 byte] - S Marker. Always 02 + // ROFFSET+RLEN+1 [1 byte] - S Length SLEN + // ROFFSET+RLEN+2 [.?. byte] - S SOFFSET + // Prepare response + // R [32] + // S [32] + // V [1] + + MEMZERO(outR, 32); + MEMZERO(outS, 32); + MEMZERO(outV, 1); + + const uint8_t derPrefix = *(inSignatureDER); + if (derPrefix != 0x30) { + return invalid_derPrefix; + } + + const uint8_t payloadLen = *(inSignatureDER + 1); + const uint8_t minPayloadLen = 2 + MINPAYLOADLEN + 2 + MINPAYLOADLEN; + const uint8_t maxPayloadLen = 2 + MAXPAYLOADLEN + 2 + MAXPAYLOADLEN; + if (payloadLen < minPayloadLen || payloadLen > maxPayloadLen) { + return invalid_payloadLen; + } + + const uint8_t rMarker = *(inSignatureDER + 2); + if (rMarker != 0x02) { + return invalid_rmaker; + } + + uint8_t rLen = *(inSignatureDER + 3); + if (rLen > MAXPAYLOADLEN || rLen < MINPAYLOADLEN) { + return invalid_rLen; + } + + const uint8_t sMarker = *(inSignatureDER + 4 + rLen); + if (sMarker != 0x02) { + return invalid_smarker; + } + + uint8_t sLen = *(inSignatureDER + 4 + rLen + 1); + if (sLen > MAXPAYLOADLEN || sLen < MINPAYLOADLEN) { + return invalid_sLen; + } + + // Get data fields + const uint8_t *rPtr = inSignatureDER + 4; + const uint8_t *sPtr = inSignatureDER + 4 + rLen + 2; + + // Correct field pointers + if (rLen < PAYLOADLEN) { + outR += PAYLOADLEN - rLen; + } + if (rLen > PAYLOADLEN) { + rPtr += rLen - PAYLOADLEN; // move forward get only 32 bytes + rLen = PAYLOADLEN; + } + + if (sLen < PAYLOADLEN) { + outS += PAYLOADLEN - sLen; + } + if (sLen > PAYLOADLEN) { + sPtr += sLen - PAYLOADLEN; // move forward get only 32 bytes + sLen = PAYLOADLEN; + } + + // Prepare V + *outV = 0; + if (inInfo & CX_ECCINFO_PARITY_ODD) { + *outV += 1; + } + if (inInfo & CX_ECCINFO_xGTn) { + *outV += 2; + } + + // Copy things + MEMCPY(outR, rPtr, rLen); + MEMCPY(outS, sPtr, sLen); + + return no_error; +} diff --git a/deps/ledger-zxlib/src/timeutils.c b/deps/ledger-zxlib/src/timeutils.c new file mode 100644 index 00000000..11d27340 --- /dev/null +++ b/deps/ledger-zxlib/src/timeutils.c @@ -0,0 +1,532 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxmacros.h" +#include "timeutils.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +const uint8_t monthDays[] = { + 31, + 28, + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31 +}; + +const uint32_t yearLookup[] = { + 0, + 365, + 730, + 1096, + 1461, + 1826, + 2191, + 2557, + 2922, + 3287, + 3652, + 4018, + 4383, + 4748, + 5113, + 5479, + 5844, + 6209, + 6574, + 6940, + 7305, + 7670, + 8035, + 8401, + 8766, + 9131, + 9496, + 9862, + 10227, + 10592, + 10957, + 11323, + 11688, + 12053, + 12418, + 12784, + 13149, + 13514, + 13879, + 14245, + 14610, + 14975, + 15340, + 15706, + 16071, + 16436, + 16801, + 17167, + 17532, + 17897, + 18262, + 18628, + 18993, + 19358, + 19723, + 20089, + 20454, + 20819, + 21184, + 21550, + 21915, + 22280, + 22645, + 23011, + 23376, + 23741, + 24106, + 24472, + 24837, + 25202, + 25567, + 25933, + 26298, + 26663, + 27028, + 27394, + 27759, + 28124, + 28489, + 28855, + 29220, + 29585, + 29950, + 30316, + 30681, + 31046, + 31411, + 31777, + 32142, + 32507, + 32872, + 33238, + 33603, + 33968, + 34333, + 34699, + 35064, + 35429, + 35794, + 36160, + 36525, + 36890, + 37255, + 37621, + 37986, + 38351, + 38716, + 39082, + 39447, + 39812, + 40177, + 40543, + 40908, + 41273, + 41638, + 42004, + 42369, + 42734, + 43099, + 43465, + 43830, + 44195, + 44560, + 44926, + 45291, + 45656, + 46021, + 46387, + 46752, + 47117, + 47482, + 47847, + 48212, + 48577, + 48942, + 49308, + 49673, + 50038, + 50403, + 50769, + 51134, + 51499, + 51864, + 52230, + 52595, + 52960, + 53325, + 53691, + 54056, + 54421, + 54786, + 55152, + 55517, + 55882, + 56247, + 56613, + 56978, + 57343, + 57708, + 58074, + 58439, + 58804, + 59169, + 59535, + 59900, + 60265, + 60630, + 60996, + 61361, + 61726, + 62091, + 62457, + 62822, + 63187, + 63552, + 63918, + 64283, + 64648, + 65013, + 65379, + 65744, + 66109, + 66474, + 66840, + 67205, + 67570, + 67935, + 68301, + 68666, + 69031, + 69396, + 69762, + 70127, + 70492, + 70857, + 71223, + 71588, + 71953, + 72318, + 72684, + 73049, + 73414, + 73779, + 74145, + 74510, + 74875, + 75240, + 75606, + 75971, + 76336, + 76701, + 77067, + 77432, + 77797, + 78162, + 78528, + 78893, + 79258, + 79623, + 79989, + 80354, + 80719, + 81084, + 81450, + 81815, + 82180, + 82545, + 82911, + 83276, + 83641, + 84006, + 84371, + 84736, + 85101, + 85466, + 85832, + 86197, + 86562, + 86927, + 87293, + 87658, + 88023, + 88388, + 88754, + 89119, + 89484, + 89849, + 90215, + 90580, + 90945, + 91310, + 91676, + 92041, + 92406, + 92771, + 93137, + 93502, + 93867, + 94232, + 94598, + 94963, + 95328, + 95693, + 96059, + 96424, + 96789, + 97154, + 97520, + 97885, + 98250, + 98615, + 98981, + 99346, + 99711, + 100076, + 100442, + 100807, + 101172, + 101537, + 101903, + 102268, + 102633, + 102998, + 103364, + 103729, + 104094, + 104459, + 104825, + 105190, + 105555, + 105920, + 106286, + 106651, + 107016, + 107381, + 107747, + 108112, + 108477, + 108842, + 109208, + 109573, + 109938, + 110303, + 110669, + 111034, + 111399, + 111764, + 112130, + 112495, + 112860, + 113225, + 113591, + 113956, + 114321, + 114686, + 115052, + 115417, + 115782, + 116147, + 116513, + 116878, + 117243, + 117608, + 117974, + 118339, + 118704, + 119069, + 119435, + 119800, + 120165, + 120530, + 120895, + 121260, + 121625, + 121990, + 122356, + 122721, + 123086, + 123451, + 123817, + 124182, + 124547, + 124912, + 125278, + 125643, + 126008, + 126373, + 126739, + 127104, + 127469, + 127834, + 128200, + 128565, + 128930, + 129295, + 129661, + 130026, + 130391, + 130756, + 131122, + 131487, + 131852, + 132217, + 132583, + 132948, + 133313, + 133678, + 134044, + 134409, + 134774, + 135139, + 135505, + 135870, + 136235, + 136600, + 136966, + 137331, + 137696, + 138061, + 138427, + 138792, + 139157, + 139522, + 139888, + 140253, + 140618, + 140983, + 141349, + 141714, + 142079, + 142444, + 142810, + 143175, + 143540, + 143905, + 144271, + 144636, + 145001, + 145366, + 145732, +}; + +// ARM does not implement gmtime. This is a simple alternative implementation +// based on section 4.16 +// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html +zxerr_t extractTime(uint64_t time, timedata_t *date) { + if (date == NULL) { + return zxerr_no_data; + } + MEMZERO(date, sizeof(timedata_t)); + + date->tm_sec = (uint8_t) (time % 60); + time -= date->tm_sec; + time /= 60; + + date->tm_min = (uint8_t) (time % 60); + time -= date->tm_min; + time /= 60; + + date->tm_hour = (uint8_t) (time % 24); + time -= date->tm_hour; + time /= 24; + + // Look up tm_year + date->tm_year = 0; + const uint16_t yearLookupSize = sizeof(yearLookup)/sizeof(yearLookup[0]); + while (date->tm_year < yearLookupSize && yearLookup[date->tm_year] <= time) date->tm_year++; + + if (date->tm_year == 0 || date->tm_year == yearLookupSize) { + return zxerr_out_of_bounds; + } + date->tm_year--; + + date->tm_day = (uint16_t) (time - yearLookup[date->tm_year] + 1); + date->tm_year = (uint16_t) (1970 + date->tm_year); + + // Get day/month + uint8_t leap = (uint8_t) (date->tm_year % 4 == 0 && (date->tm_year % 100 != 0 || date->tm_year % 400 == 0) ? 1 : 0); + + for (date->tm_mon = 0; date->tm_mon < 12; date->tm_mon++) { + uint8_t tmp = monthDays[date->tm_mon]; + tmp += (date->tm_mon == 1 ? leap : 0); + if (date->tm_day <= tmp) { + break; + } + date->tm_day -= tmp; + } + date->tm_mon++; + date->monthName = getMonth(date->tm_mon); + + return zxerr_ok; +} + +zxerr_t decodeTime(timedata_t* td, uint64_t t) { + return extractTime(t, td); +} + +zxerr_t printTime(char *out, uint16_t outLen, uint64_t t) { + timedata_t date; + CHECK_ZXERR(extractTime(t, &date)) + + // YYYYmmdd HH:MM:SS + snprintf(out, outLen, "%02d%s%04d %02d:%02d:%02dUTC", + date.tm_day, + date.monthName, + date.tm_year, + date.tm_hour, date.tm_min, date.tm_sec + ); + + return zxerr_ok; +} + +zxerr_t printTimeSpecialFormat(char *out, uint16_t outLen, uint64_t t) { + timedata_t date; + CHECK_ZXERR(extractTime(t, &date)) + + // YYYYmmdd HH:MM:SS + snprintf(out, outLen, "%d-%02d-%02dT%02d:%02d:%02dZ", + date.tm_year, + date.tm_mon, + date.tm_day, + date.tm_hour, date.tm_min, date.tm_sec + ); + + return zxerr_ok; +} + + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/src/zxformat.c b/deps/ledger-zxlib/src/zxformat.c new file mode 100644 index 00000000..8625de57 --- /dev/null +++ b/deps/ledger-zxlib/src/zxformat.c @@ -0,0 +1,151 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxformat.h" +#include +#include +#include "utf8.h" + +size_t asciify(char *utf8_in_ascii_out) { + return asciify_ext(utf8_in_ascii_out, utf8_in_ascii_out); +} + +size_t asciify_ext(const char *utf8_in, char *ascii_only_out) { + void *p = (void *) utf8_in; + char *q = ascii_only_out; + + // utf8valid returns zero on success + while (*((char *) p) && utf8valid(p) == 0) { + utf8_int32_t tmp_codepoint = 0; + p = utf8codepoint(p, &tmp_codepoint); + *q = (char) ((tmp_codepoint >= 32 && tmp_codepoint <= (int32_t) 0x7F) ? tmp_codepoint : '.'); + q++; + } + + // Terminate string + *q = 0; + return q - ascii_only_out; +} + +uint8_t intstr_to_fpstr_inplace(char *number, size_t number_max_size, uint8_t decimalPlaces) { + size_t numChars = strnlen(number, number_max_size); + MEMZERO(number + numChars, number_max_size - numChars); + + if (number_max_size < 1) { + // No space to do anything + return 0; + } + + if (number_max_size <= numChars) { + // No space to do anything + return 0; + } + + if (numChars == 0) { + // Empty number, make a zero + snprintf(number, number_max_size, "0"); + numChars = 1; + } + + // Check all are numbers + size_t firstDigit = numChars; + for (size_t i = 0; i < numChars; i++) { + if (number[i] < '0' || number[i] > '9') { + snprintf(number, number_max_size, "ERR"); + return 0; + } + if (number[i] != '0' && firstDigit > i) { + firstDigit = i; + } + } + + // Trim any incorrect leading zeros + if (firstDigit == numChars) { + snprintf(number, number_max_size, "0"); + numChars = 1; + } else { + // Trim leading zeros + MEMMOVE(number, number + firstDigit, numChars - firstDigit); + MEMZERO(number + numChars - firstDigit, firstDigit); + } + + // If there are no decimal places return + if (decimalPlaces == 0) { + return numChars; + } + + // Now insert decimal point + +// 0123456789012 <-decimal places +// abcd < numChars = 4 +// abcd < shift +// 000000000abcd < fill +// 0.00000000abcd < add decimal point + + if (numChars < decimalPlaces + 1) { + // Move to end + const uint16_t padSize = decimalPlaces - numChars + 1; + MEMMOVE(number + padSize, number, numChars); + MEMSET(number, '0', padSize); + numChars = strnlen(number, number_max_size); + } + + if (numChars < decimalPlaces) { + return 0; + } + // add decimal point + const uint16_t pointPosition = numChars - decimalPlaces; + MEMMOVE(number + pointPosition + 1, number + pointPosition, decimalPlaces); // shift content + number[pointPosition] = '.'; + + numChars = strnlen(number, number_max_size); + + if (numChars > UINT8_MAX) { + // Overflow + return 0; + } + return (uint8_t) numChars; +} + +size_t z_strlen(const char *buffer, size_t maxSize) { + if (buffer == NULL) return 0; + return strnlen(buffer, maxSize); +} + +zxerr_t z_str3join(char *buffer, size_t bufferSize, const char *prefix, const char *suffix) { + size_t messageSize = z_strlen(buffer, bufferSize); + const size_t prefixSize = z_strlen(prefix, bufferSize); + const size_t suffixSize = z_strlen(suffix, bufferSize); + + size_t requiredSize = 1 /* termination */ + messageSize + prefixSize + suffixSize; + + if (bufferSize < requiredSize) { + snprintf(buffer, bufferSize, "ERR???"); + return zxerr_buffer_too_small; + } + + if (suffixSize > 0) { + memmove(buffer + messageSize, suffix, suffixSize); + buffer[messageSize + suffixSize] = 0; + } + + // shift and add prefix + if (prefixSize > 0) { + memmove(buffer + prefixSize, buffer, messageSize + suffixSize + 1); + memmove(buffer, prefix, prefixSize); + } + + return zxerr_ok; +} diff --git a/deps/ledger-zxlib/src/zxmacros.c b/deps/ledger-zxlib/src/zxmacros.c new file mode 100644 index 00000000..62e46af4 --- /dev/null +++ b/deps/ledger-zxlib/src/zxmacros.c @@ -0,0 +1,72 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxmacros.h" + +#ifdef __cplusplus +#pragma clang diagnostic push +#pragma ide diagnostic ignored "EndlessLoop" +#endif + +void handle_stack_overflow() { + zemu_log("!!!!!!!!!!!!!!!!!!!!!! CANARY TRIGGERED!!! STACK OVERFLOW DETECTED\n"); +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) + io_seproxyhal_se_reset(); +#else + while (1); +#endif +} + +#ifdef __cplusplus +#pragma clang diagnostic pop +#endif + +__Z_UNUSED void check_app_canary() { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) + if (app_stack_canary != APP_STACK_CANARY_MAGIC) handle_stack_overflow(); +#endif +} + +#if defined(ZEMU_LOGGING) && (defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX)) +void zemu_log_stack(const char *ctx) { + #define STACK_SHIFT 20 + void* p = NULL; + char buf[70]; + snprintf(buf, sizeof(buf), "|SP| %p %p (%d) : %s\n", + &app_stack_canary, + ((void*)&p)+STACK_SHIFT, + (uint32_t)((void*)&p)+STACK_SHIFT - (uint32_t)&app_stack_canary, + ctx); + zemu_log(buf); + (void) ctx; +} +#else + +void zemu_log_stack(__Z_UNUSED const char *ctx) {} + +#endif + + +#if defined(ZEMU_LOGGING) && (defined (TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX)) +void zemu_trace(const char *file, uint32_t line) { + char buf[200]; + snprintf(buf, sizeof(buf), "|TRACE| %s:%d\n", file, line); + zemu_log(buf); +} +#else + +void zemu_trace(__Z_UNUSED const char *file, __Z_UNUSED uint32_t line) {} + +#endif diff --git a/deps/ledger-zxlib/src/zxutils_ledger.c b/deps/ledger-zxlib/src/zxutils_ledger.c new file mode 100644 index 00000000..48006657 --- /dev/null +++ b/deps/ledger-zxlib/src/zxutils_ledger.c @@ -0,0 +1,154 @@ +//#******************************************************************************* +//#* (c) 2021 Zondax GmbH +//#* (c) 2020 Ledger SAS +//#* +//#* Licensed under the Apache License, Version 2.0 (the "License"); +//#* you may not use this file except in compliance with the License. +//#* You may obtain a copy of the License at +//#* +//#* http://www.apache.org/licenses/LICENSE-2.0 +//#* +//#* Unless required by applicable law or agreed to in writing, software +//#* distributed under the License is distributed on an "AS IS" BASIS, +//#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//#* See the License for the specific language governing permissions and +//#* limitations under the License. +//#******************************************************************************** +#include "zxutils_ledger.h" + +#ifndef NULL +#define NULL ((void *)0) +#endif + +// We implement a light mechanism in order to be able to retrieve the width of +// nano S characters, in the two possible fonts: +// - BAGL_FONT_OPEN_SANS_EXTRABOLD_11px, +// - BAGL_FONT_OPEN_SANS_REGULAR_11px. +#define NANOS_FIRST_CHAR 0x20 +#define NANOS_LAST_CHAR 0x7F + +// OPEN_SANS_REGULAR_11PX << 4 | OPEN_SANS_EXTRABOLD_11PX +const char nanos_characters_width[96] = { + 3 << 4 | 3, /* code 0020 */ + 3 << 4 | 3, /* code 0021 */ + 4 << 4 | 6, /* code 0022 */ + 7 << 4 | 7, /* code 0023 */ + 6 << 4 | 6, /* code 0024 */ + 9 << 4 | 10, /* code 0025 */ + 8 << 4 | 9, /* code 0026 */ + 2 << 4 | 3, /* code 0027 */ + 3 << 4 | 4, /* code 0028 */ + 3 << 4 | 4, /* code 0029 */ + 6 << 4 | 6, /* code 002A */ + 6 << 4 | 6, /* code 002B */ + 3 << 4 | 3, /* code 002C */ + 4 << 4 | 4, /* code 002D */ + 3 << 4 | 3, /* code 002E */ + 4 << 4 | 5, /* code 002F */ + 6 << 4 | 8, /* code 0030 */ + 6 << 4 | 6, /* code 0031 */ + 6 << 4 | 7, /* code 0032 */ + 6 << 4 | 7, /* code 0033 */ + 8 << 4 | 8, /* code 0034 */ + 6 << 4 | 6, /* code 0035 */ + 6 << 4 | 8, /* code 0036 */ + 6 << 4 | 7, /* code 0037 */ + 6 << 4 | 8, /* code 0038 */ + 6 << 4 | 8, /* code 0039 */ + 3 << 4 | 3, /* code 003A */ + 3 << 4 | 3, /* code 003B */ + 6 << 4 | 5, /* code 003C */ + 6 << 4 | 6, /* code 003D */ + 6 << 4 | 5, /* code 003E */ + 5 << 4 | 6, /* code 003F */ + 10 << 4 | 10, /* code 0040 */ + 7 << 4 | 8, /* code 0041 */ + 7 << 4 | 7, /* code 0042 */ + 7 << 4 | 7, /* code 0043 */ + 8 << 4 | 8, /* code 0044 */ + 6 << 4 | 6, /* code 0045 */ + 6 << 4 | 6, /* code 0046 */ + 8 << 4 | 8, /* code 0047 */ + 8 << 4 | 8, /* code 0048 */ + 3 << 4 | 4, /* code 0049 */ + 4 << 4 | 5, /* code 004A */ + 7 << 4 | 8, /* code 004B */ + 6 << 4 | 6, /* code 004C */ + 10 << 4 | 11, /* code 004D */ + 8 << 4 | 9, /* code 004E */ + 9 << 4 | 9, /* code 004F */ + 7 << 4 | 7, /* code 0050 */ + 9 << 4 | 9, /* code 0051 */ + 7 << 4 | 8, /* code 0052 */ + 6 << 4 | 6, /* code 0053 */ + 7 << 4 | 6, /* code 0054 */ + 8 << 4 | 8, /* code 0055 */ + 7 << 4 | 6, /* code 0056 */ + 10 << 4 | 11, /* code 0057 */ + 6 << 4 | 8, /* code 0058 */ + 6 << 4 | 7, /* code 0059 */ + 6 << 4 | 7, /* code 005A */ + 4 << 4 | 5, /* code 005B */ + 4 << 4 | 5, /* code 005C */ + 4 << 4 | 5, /* code 005D */ + 6 << 4 | 7, /* code 005E */ + 5 << 4 | 6, /* code 005F */ + 6 << 4 | 7, /* code 0060 */ + 6 << 4 | 7, /* code 0061 */ + 7 << 4 | 7, /* code 0062 */ + 5 << 4 | 6, /* code 0063 */ + 7 << 4 | 7, /* code 0064 */ + 6 << 4 | 7, /* code 0065 */ + 5 << 4 | 6, /* code 0066 */ + 6 << 4 | 7, /* code 0067 */ + 7 << 4 | 7, /* code 0068 */ + 3 << 4 | 4, /* code 0069 */ + 4 << 4 | 5, /* code 006A */ + 6 << 4 | 7, /* code 006B */ + 3 << 4 | 4, /* code 006C */ + 10 << 4 | 10, /* code 006D */ + 7 << 4 | 7, /* code 006E */ + 7 << 4 | 7, /* code 006F */ + 7 << 4 | 7, /* code 0070 */ + 7 << 4 | 7, /* code 0071 */ + 4 << 4 | 5, /* code 0072 */ + 5 << 4 | 6, /* code 0073 */ + 4 << 4 | 5, /* code 0074 */ + 7 << 4 | 7, /* code 0075 */ + 6 << 4 | 7, /* code 0076 */ + 9 << 4 | 10, /* code 0077 */ + 6 << 4 | 7, /* code 0078 */ + 6 << 4 | 7, /* code 0079 */ + 5 << 4 | 6, /* code 007A */ + 4 << 4 | 5, /* code 007B */ + 6 << 4 | 6, /* code 007C */ + 4 << 4 | 5, /* code 007D */ + 6 << 4 | 6, /* code 007E */ + 7 << 4 | 6, /* code 007F */ +}; + +unsigned short zx_compute_line_width_light(const char* text, unsigned char text_length) { + char current_char; + unsigned short line_width = 0; + + if(text == NULL) { + return 0xFFFF; + } + + // We parse the characters of the input text on all the input length. + while (text_length--) { + current_char = *text; + + if (current_char < NANOS_FIRST_CHAR || current_char > NANOS_LAST_CHAR) { + if (current_char == '\n' || current_char == '\r') { + break; + } + } + else { + // Regular. + line_width += (nanos_characters_width[current_char - NANOS_FIRST_CHAR] >> 0x04) & 0x0F; + } + text++; + } + return line_width; +} diff --git a/deps/ledger-zxlib/templates/Makefile.root b/deps/ledger-zxlib/templates/Makefile.root new file mode 100644 index 00000000..566f6073 --- /dev/null +++ b/deps/ledger-zxlib/templates/Makefile.root @@ -0,0 +1,29 @@ +#******************************************************************************* +#* (c) 2019 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +# We use BOLOS_SDK to determine the development environment that is being used +# BOLOS_SDK IS DEFINED We use the plain Makefile for Ledger +# BOLOS_SDK NOT DEFINED We use a containerized build approach + +ifeq ($(BOLOS_SDK),) +include $(CURDIR)/deps/ledger-zxlib/cmake/dockerized_build.mk +else +default: + $(MAKE) -C app +%: + $(info "Calling app Makefile for target $@") + COIN=$(COIN) $(MAKE) -C app $@ +endif diff --git a/deps/ledger-zxlib/tests/asciify.cpp b/deps/ledger-zxlib/tests/asciify.cpp new file mode 100644 index 00000000..f54e0a0a --- /dev/null +++ b/deps/ledger-zxlib/tests/asciify.cpp @@ -0,0 +1,119 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include + +namespace { + TEST(ASCIIFY, pure) { + char input[] = "This is only ascii"; + char have[50]; + + asciify_ext(input, have); + + EXPECT_STREQ(input, have); + } + + TEST(ASCIIFY, ascii_below_32) { + char input[] = "\05test"; + char want[] = ".test"; + char have[50]; + + EXPECT_EQ(5, strlen(input)); + + size_t ascii_len = asciify_ext(input, have); + std::cout << have << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, have); + } + + TEST(ASCIIFY, extended) { + char input[] = "cumpleaños"; + char want[] = "cumplea.os"; + char have[50]; + + EXPECT_EQ(11, strlen(input)); + + size_t ascii_len = asciify_ext(input, have); + std::cout << have << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, have); + } + + TEST(ASCIIFY, utf8) { + char input[] = "哈Something哈"; + char want[] = ".Something."; + char have[50]; + + EXPECT_EQ(15, strlen(input)); + + size_t ascii_len = asciify_ext(input, have); + std::cout << have << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, have); + } + + TEST(ASCIIFY, inplace_pure) { + char data[] = "This is only ascii"; + char want[] = "This is only ascii"; + + asciify(data); + EXPECT_STREQ(want, data); + } + + TEST(ASCIIFY, inplace_ascii_below_32) { + char data[] = "\05test"; + char want[] = ".test"; + + EXPECT_EQ(5, strlen(data)); + + size_t ascii_len = asciify(data); + std::cout << data << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, data); + } + + TEST(ASCIIFY, inplace_extended) { + char data[] = "cumpleaños"; + char want[] = "cumplea.os"; + + EXPECT_EQ(11, strlen(data)); + + size_t ascii_len = asciify(data); + std::cout << data << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, data); + } + + TEST(ASCIIFY, inplace_utf8) { + char data[] = "哈Something哈"; + char want[] = ".Something."; + + EXPECT_EQ(15, strlen(data)); + + size_t ascii_len = asciify(data); + std::cout << data << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, data); + } + +} diff --git a/deps/ledger-zxlib/tests/base64.cpp b/deps/ledger-zxlib/tests/base64.cpp new file mode 100644 index 00000000..af9a8e55 --- /dev/null +++ b/deps/ledger-zxlib/tests/base64.cpp @@ -0,0 +1,57 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include "base64.h" + +namespace { + TEST(BASE64, basic_case) { + char out[100]; + uint8_t data[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; + + base64_encode(out, sizeof(out), data, 0); + EXPECT_STREQ(out, ""); + + base64_encode(out, sizeof(out), data, 1); + EXPECT_STREQ(out, "AQ=="); + + base64_encode(out, sizeof(out), data, 2); + EXPECT_STREQ(out, "AQM="); + + base64_encode(out, sizeof(out), data, 3); + EXPECT_STREQ(out, "AQMF"); + + base64_encode(out, sizeof(out), data, 4); + EXPECT_STREQ(out, "AQMFBw=="); + + base64_encode(out, sizeof(out), data, 5); + EXPECT_STREQ(out, "AQMFBwk="); + + base64_encode(out, sizeof(out), data, 6); + EXPECT_STREQ(out, "AQMFBwkL"); + + base64_encode(out, sizeof(out), data, 7); + EXPECT_STREQ(out, "AQMFBwkLDQ=="); + + base64_encode(out, sizeof(out), data, 8); + EXPECT_STREQ(out, "AQMFBwkLDQ8="); + + base64_encode(out, sizeof(out), data, 9); + EXPECT_STREQ(out, "AQMFBwkLDQ8R"); + + base64_encode(out, sizeof(out), data, 10); + EXPECT_STREQ(out, "AQMFBwkLDQ8REw=="); + } +} diff --git a/deps/ledger-zxlib/tests/bech32.cpp b/deps/ledger-zxlib/tests/bech32.cpp new file mode 100644 index 00000000..b11d2fee --- /dev/null +++ b/deps/ledger-zxlib/tests/bech32.cpp @@ -0,0 +1,145 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include +#include + +namespace { + TEST(BECH32, hex_to_address) { + char addr_out[100]; + const char *hrp = "zx"; + + uint8_t data1[] = {1, 3, 5}; + uint8_t data2[] = {1, 3, 5, 7, 9, 11, 13}; + + auto err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data1, sizeof(data1), 0, BECH32_ENCODING_BECH32); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qypse825ac", addr_out); + + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data2, sizeof(data2), 0, BECH32_ENCODING_BECH32); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2pcfpvx20dk22", addr_out); + + /// + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data1, sizeof(data1), 1,BECH32_ENCODING_BECH32); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2ucfnzd", addr_out); + + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data2, sizeof(data2), 1, BECH32_ENCODING_BECH32); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2pcfpvxshamanz", addr_out); + } + + TEST(BECH32, huge_input) { + char addr_out[200]; + const char *hrp = "zx"; + + auto data = std::vector(1000, 0x55); + + auto err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data.data(), data.size(),0, BECH32_ENCODING_BECH32); + ASSERT_EQ(err, zxerr_out_of_bounds); + + std::cout << addr_out << std::endl; + } + + TEST(BECH32, small_output) { + char addr_out[1000]; + const char *hrp = "zx"; + + auto data = std::vector(32, 0x55); + + MEMZERO(addr_out, sizeof(addr_out)); + + // declare size to be smaller + const size_t declared_size = 52; + + auto err = bech32EncodeFromBytes(addr_out, declared_size, hrp, data.data(), data.size(), 0, BECH32_ENCODING_BECH32); + ASSERT_EQ(err, zxerr_buffer_too_small); + + for (int i = declared_size; i < sizeof(addr_out); i++) { + ASSERT_EQ(addr_out[i], 0); + } + + std::cout << addr_out << std::endl; + } + + TEST(BECH32M, hex_to_address) { + char addr_out[100]; + const char *hrp = "zx"; + + uint8_t data1[] = {1, 3, 5}; + uint8_t data2[] = {1, 3, 5, 7, 9, 11, 13}; + + auto err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data1, sizeof(data1), 0, BECH32_ENCODING_BECH32M); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qypsvm6cc6", addr_out); + + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data2, sizeof(data2), 0, BECH32_ENCODING_BECH32M); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2pcfpvxlna60g", addr_out); + + /// + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data1, sizeof(data1), 1,BECH32_ENCODING_BECH32M); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2fyel80", addr_out); + + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data2, sizeof(data2), 1, BECH32_ENCODING_BECH32M); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2pcfpvxszpt3kq", addr_out); + } + + TEST(BECH32M, huge_input) { + char addr_out[200]; + const char *hrp = "zx"; + + auto data = std::vector(1000, 0x55); + + auto err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data.data(), data.size(),0, BECH32_ENCODING_BECH32M); + ASSERT_EQ(err, zxerr_out_of_bounds); + + std::cout << addr_out << std::endl; + } + + TEST(BECH32M, small_output) { + char addr_out[1000]; + const char *hrp = "zx"; + + auto data = std::vector(32, 0x55); + + MEMZERO(addr_out, sizeof(addr_out)); + + // declare size to be smaller + const size_t declared_size = 52; + + auto err = bech32EncodeFromBytes(addr_out, declared_size, hrp, data.data(), data.size(), 0, BECH32_ENCODING_BECH32M); + ASSERT_EQ(err, zxerr_buffer_too_small); + + for (int i = declared_size; i < sizeof(addr_out); i++) { + ASSERT_EQ(addr_out[i], 0); + } + + std::cout << addr_out << std::endl; + } +} diff --git a/deps/ledger-zxlib/tests/bip44path.cpp b/deps/ledger-zxlib/tests/bip44path.cpp new file mode 100644 index 00000000..807d5a6a --- /dev/null +++ b/deps/ledger-zxlib/tests/bip44path.cpp @@ -0,0 +1,89 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include + +namespace { + TEST(MACROS, bip32empty) { + char buffer[100]; + uint32_t path[] = {44, 60, 0, 0, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 0); + EXPECT_EQ("EMPTY PATH", std::string(buffer)); + } + + TEST(MACROS, bip32tooManyChildren) { + char buffer[100]; + uint32_t path[] = {44, 60, 0, 0, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 200); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32notEnoughSpaceInBuffer1) { + char buffer[6]; + uint32_t path[] = {1234, 60, 0, 0, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32notEnoughSpaceInBuffer2) { + char buffer[9]; + uint32_t path[] = {1, 1, 1, 1, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32notEnoughSpaceInBuffer3) { + char buffer[10]; + uint32_t path[] = {1, 1, 1, 1, 0x80000001 }; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32justEnoughSpaceInBuffer3) { + char buffer[10]; + uint32_t path[] = {1, 1, 1, 1, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("1/1/1/1/1", std::string(buffer)); + } + + TEST(MACROS, bip44path1) { + uint32_t path[] = {44, 60, 0, 0, 1}; + + char buffer[100]; + bip44_to_str(buffer, sizeof(buffer), path); + + EXPECT_EQ("44/60/0/0/1", std::string(buffer)); + } + + TEST(MACROS, bip44path2) { + uint32_t path[] = {0x8000002c, 60, 0, 0, 1}; + + char buffer[100]; + bip44_to_str(buffer, sizeof(buffer), path); + + EXPECT_EQ("44'/60/0/0/1", std::string(buffer)); + } + + TEST(MACROS, bip44path3) { + uint32_t path[] = {0x8000002c, 60, 0, 0, 0x80000001}; + + char buffer[100]; + bip44_to_str(buffer, sizeof(buffer), path); + + EXPECT_EQ("44'/60/0/0/1'", std::string(buffer)); + } +} diff --git a/deps/ledger-zxlib/tests/buffering_tests.cpp b/deps/ledger-zxlib/tests/buffering_tests.cpp new file mode 100644 index 00000000..c7292d1b --- /dev/null +++ b/deps/ledger-zxlib/tests/buffering_tests.cpp @@ -0,0 +1,229 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gtest/gtest.h" +#include "buffering.h" + +namespace { + + TEST(Buffering, SmallBuffer) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + // Data is small enough to fit into ram buffer + uint8_t small[50]; + auto num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(sizeof(small), num_bytes) << "Append should not return error"; + + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + EXPECT_EQ(50, buffering_get_ram_buffer()->pos) << "Wrong position of the written data in the ram buffer"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(0, buffering_get_flash_buffer()->pos) << "Wrong position of the written data in the flash buffer"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, BigBuffer) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + // Data is too big to fit into ram buffer, it will be written directly to flash + uint8_t big[500]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(sizeof(big), num_bytes) << "Append should not return error"; + + EXPECT_FALSE(buffering_get_ram_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + EXPECT_TRUE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + EXPECT_EQ(0, buffering_get_ram_buffer()->pos) << "Wrong position of the written data in the ram buffer"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(500, buffering_get_flash_buffer()->pos) << "Wrong position of the written data in the flash buffer"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, SmallBufferMultipleTimesWithinRam) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t small[40]; + auto num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(sizeof(small), num_bytes) << "Append should not return error"; + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + + // Here we write another chunk which should not top over the ram buffer + buffering_append(small, sizeof(small)); + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + + EXPECT_EQ(sizeof(small) * 2, buffering_get_ram_buffer()->pos) << "Data should be written to RAM"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(0, buffering_get_flash_buffer()->pos) << "Data should be written to RAM"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, SmallBufferMultipleTimesToFlash) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t small[100]; + buffering_append(small, sizeof(small)); + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + + // Here we append another small buffer, this time we're going to exceed ram's size + // data will be copied to nvram + buffering_append(small, sizeof(small)); + EXPECT_FALSE(buffering_get_ram_buffer()->in_use) << "Data should be now in FLASH"; + EXPECT_TRUE(buffering_get_flash_buffer()->in_use) << "Data should be now in FLASH"; + + EXPECT_EQ(0, buffering_get_ram_buffer()->pos) << "RAM buffer should be reset"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(200, buffering_get_flash_buffer()->pos) << "Wrong position of the written data in the flash buffer"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, SmallBufferMultipleTimes_CheckData) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t small1[100]; + for (int i = 0; i < sizeof(small1); i++) { + small1[i] = i; + } + buffering_append(small1, sizeof(small1)); + + uint8_t small2[200]; + for (int i = 0; i < sizeof(small2); i++) { + small2[i] = 100 - i; + } + auto num_bytes = buffering_append(small2, sizeof(small2)); + EXPECT_EQ(sizeof(small2), num_bytes) << "Append should not return error"; + + // In this test we want to make sure that data is not compromised. + uint8_t *dst = buffering_get_flash_buffer()->data; + for (int i = 0; i < sizeof(small1) + sizeof(small2); i++) { + if (i < sizeof(small1)) { + EXPECT_EQ(dst[i], small1[i]) << "Wrong data written to FLASH"; + } else { + EXPECT_EQ(dst[i], small2[i - sizeof(small1)]) << "Wrong data written to FLASH"; + } + } + } + + TEST(Buffering, Reset) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t big[1000]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(sizeof(big), num_bytes) << "Append should not return error"; + + EXPECT_FALSE(buffering_get_ram_buffer()->in_use) << "Writing big buffer should only write to FLASH"; + EXPECT_TRUE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should only write to FLASH"; + + buffering_reset(); + + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "After reset RAM should be enabled by default"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "After reset RAM should be enabled by default"; + } + + TEST(Buffering, NotEnoughRoomInFlash) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t big[1101]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(0, num_bytes) << "Appending outside the bounds of the buffer should return error"; + } + + TEST(Buffering, NoFlashOnlyRAM) { + uint8_t ram_buffer[100]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + nullptr, 0); + + uint8_t small[10]; + auto num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(10, num_bytes) << "Could not add to RAM"; + + num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(10, num_bytes) << "Could not add to RAM"; + + num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(10, num_bytes) << "Could not add to RAM"; + + auto state = buffering_get_buffer(); + EXPECT_EQ(30, state->pos) << "Invalid buffer size"; + + uint8_t small2[70]; + num_bytes = buffering_append(small2, sizeof(small2)); + EXPECT_EQ(70, num_bytes); + + state = buffering_get_buffer(); + EXPECT_EQ(100, state->pos) << "Invalid buffer size"; + + num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(0, num_bytes) << "Could add to RAM when it should have been impossible"; + } + + TEST(Buffering, NoFlash) { + uint8_t ram_buffer[100]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + nullptr, 0); + + uint8_t big[1101]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(0, num_bytes) << "Appending outside the bounds of the buffer should return error"; + } +} diff --git a/deps/ledger-zxlib/tests/doubledabble.cpp b/deps/ledger-zxlib/tests/doubledabble.cpp new file mode 100644 index 00000000..4b7b0488 --- /dev/null +++ b/deps/ledger-zxlib/tests/doubledabble.cpp @@ -0,0 +1,164 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include +#include "bignum.h" + +using ::testing::TestWithParam; +using ::testing::Values; + +typedef struct { + std::string hex; + std::string expectedOutput; +} bignum_testcase_t; + +class BignumLittleEndianTests : public ::testing::TestWithParam { +}; + +class BignumBigEndianTests : public ::testing::TestWithParam { +}; + +INSTANTIATE_TEST_SUITE_P + +( + BignumTestCases, BignumLittleEndianTests, testing::Values( + bignum_testcase_t{"00", "0"}, + bignum_testcase_t{"01", "1"}, + bignum_testcase_t{"0001", "256"}, + bignum_testcase_t{"03E8", "59395"}, + bignum_testcase_t{"E803", "1000"}, + bignum_testcase_t{"10", "16"}, + bignum_testcase_t{"FF01", "511"}, + bignum_testcase_t{"0102", "513"}, + bignum_testcase_t{"FFFF01", "131071"}, + bignum_testcase_t{"a08601", "100000"}, + bignum_testcase_t{"40420f", "1000000"}, + bignum_testcase_t{"809698", "10000000"}, + bignum_testcase_t{"002d3101", "20000000"}, + bignum_testcase_t{"00e1f505", "100000000"}, + bignum_testcase_t{"00407a10f35a", "100000000000000"}, + bignum_testcase_t{"d2029649", "1234567890"}, + bignum_testcase_t{"d20a3fce96f1cf8c9cb4378c37a4873f17621ebce404f5aa13", + "123456789012345678901234567890123456789012345678901234567890"} +)); + +// Check that bignums are printed properly (parametric tests) +TEST_P(BignumLittleEndianTests, print) { + auto testcase = GetParam(); + + uint8_t inBuffer[100]; + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), testcase.hex.c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + + bignumLittleEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + + char bufferUI[300]; + bignumLittleEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + EXPECT_THAT(std::string(bufferUI), testing::Eq(testcase.expectedOutput)); +} + +// Check that bignums are printed properly (range tests) +TEST(BignumLittleEndianTests, range) { + uint8_t inBuffer[100]; + + for (uint64_t i = 0; i < 10000; i++) { + std::stringstream s; + uint64_t tmp = i; + while (tmp != 0) { + s << std::setfill('0') << std::setw(2) << std::hex << tmp % 256; + tmp /= 256; + } + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), s.str().c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + bignumLittleEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + char bufferUI[300]; + bignumLittleEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + + std::stringstream expected; + expected << i; + EXPECT_THAT(std::string(bufferUI), testing::Eq(expected.str())) << s.str(); + } +} + +INSTANTIATE_TEST_SUITE_P + +( + BignumTestCases, BignumBigEndianTests, testing::Values( + bignum_testcase_t{"00", "0"}, + bignum_testcase_t{"01", "1"}, + bignum_testcase_t{"0001", "1"}, + bignum_testcase_t{"000001", "1"}, + bignum_testcase_t{"03E8", "1000"}, + bignum_testcase_t{"E803", "59395"}, + bignum_testcase_t{"10", "16"}, + bignum_testcase_t{"FF01", "65281"}, + bignum_testcase_t{"01FF", "511"}, + bignum_testcase_t{"0102", "258"}, + bignum_testcase_t{"FFFF01", "16776961"}, + bignum_testcase_t{"a08601", "10520065"}, + bignum_testcase_t{"40420f", "4211215"}, + bignum_testcase_t{"809698", "8427160"}, + bignum_testcase_t{"002d3101", "2961665"}, + bignum_testcase_t{"00e1f505", "14808325"}, + bignum_testcase_t{"00407a10f35a", "276925838170"}, + bignum_testcase_t{"d2029649", "3523384905"}, + bignum_testcase_t{"d20a3fce96f1cf8c9cb4378c37a4873f17621ebce404f5aa13", + "1318442675213289749221432902819395197389189473307425559128595"} +)); + +// Check that bignums are printed properly (parametric tests) +TEST_P(BignumBigEndianTests, print) { + auto testcase = GetParam(); + + uint8_t inBuffer[100]; + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), testcase.hex.c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + bignumBigEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + + char bufferUI[300]; + bignumBigEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + EXPECT_THAT(std::string(bufferUI), testing::Eq(testcase.expectedOutput)); +} + +// Check that bignums are printed properly (range tests) +TEST(BignumBigEndianTests, range) { + uint8_t inBuffer[100]; + + for (uint64_t i = 0; i < 2500; i += 7) { + std::stringstream s; + s << std::setfill('0') << std::setw(10) << std::hex << i; + std::cout << s.str() << std::endl; + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), s.str().c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + bignumBigEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + char bufferUI[300]; + bignumBigEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + + std::stringstream expected; + expected << i; + EXPECT_THAT(std::string(bufferUI), testing::Eq(expected.str())) << s.str(); + } +} diff --git a/deps/ledger-zxlib/tests/hexutils.cpp b/deps/ledger-zxlib/tests/hexutils.cpp new file mode 100644 index 00000000..e9d3ae4c --- /dev/null +++ b/deps/ledger-zxlib/tests/hexutils.cpp @@ -0,0 +1,51 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include + +#include "hexutils.h" + +TEST(HEXUTILS, parseHexString) { + char s[] = "1234567890"; + uint8_t data[100]; + + auto length = parseHexString(data, sizeof(data), s); + + ASSERT_THAT(length, testing::Eq(5)); + + ASSERT_THAT(data[0], testing::Eq(0x12)); + ASSERT_THAT(data[1], testing::Eq(0x34)); + ASSERT_THAT(data[2], testing::Eq(0x56)); + ASSERT_THAT(data[3], testing::Eq(0x78)); + ASSERT_THAT(data[4], testing::Eq(0x90)); +} + +TEST(HEXUTILS, parseHexString2) { + char s[] = "be333be7ee"; + uint8_t data[100]; + + auto length = parseHexString(data, sizeof(data), s); + + ASSERT_THAT(length, testing::Eq(5)); + + ASSERT_THAT(data[0], testing::Eq(0xbe)); + ASSERT_THAT(data[1], testing::Eq(0x33)); + ASSERT_THAT(data[2], testing::Eq(0x3b)); + ASSERT_THAT(data[3], testing::Eq(0xe7)); + ASSERT_THAT(data[4], testing::Eq(0xee)); +} diff --git a/deps/ledger-zxlib/tests/macros.cpp b/deps/ledger-zxlib/tests/macros.cpp new file mode 100644 index 00000000..a4a2e862 --- /dev/null +++ b/deps/ledger-zxlib/tests/macros.cpp @@ -0,0 +1,502 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include + +namespace { + TEST(FORMAT, array_to_hexstr) { + uint8_t array1[] = {1, 3, 5}; + + char output[20]; + memset(output, 1, 20); + + array_to_hexstr(output, sizeof(output), array1, sizeof(array1)); + EXPECT_EQ(memcmp(output, "010305", 2 * sizeof(array1)), 0); + EXPECT_EQ(output[2 * sizeof(array1)], 0); + } + + TEST(FORMAT, fpuint64_to_str) { + char output[100]; + printf("\n"); + + fpuint64_to_str(output, sizeof(output), 123, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00123"); + + fpuint64_to_str(output, sizeof(output), 1234, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.01234"); + + fpuint64_to_str(output, sizeof(output), 12345, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.12345"); + + fpuint64_to_str(output, sizeof(output), 123456, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1.23456"); + + fpuint64_to_str(output, sizeof(output), 1234567, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "12.34567"); + } + + TEST(FORMAT, fpstr_to_str) { + char output[100]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "", 0); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0"); + + fpstr_to_str(output, sizeof(output), "1", 0); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1"); + + fpstr_to_str(output, sizeof(output), "123", 0); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "123"); + + fpstr_to_str(output, sizeof(output), "", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00000"); + + fpstr_to_str(output, sizeof(output), "0", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00000"); + + fpstr_to_str(output, sizeof(output), "123", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00123"); + + fpstr_to_str(output, sizeof(output), "1234", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.01234"); + + fpstr_to_str(output, sizeof(output), "12345", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.12345"); + + fpstr_to_str(output, sizeof(output), "123456", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1.23456"); + + fpstr_to_str(output, sizeof(output), "1234567", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "12.34567"); + } + + TEST(FORMAT, fpstr_to_str_BAD_zeros) { + char output[8]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00000"); + + fpstr_to_str(output, sizeof(output), "", 6); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "", 8); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + } + + TEST(FORMAT, fpstr_to_str_BAD_short) { + char output[8]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "123", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00123"); + + fpstr_to_str(output, sizeof(output), "123", 6); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "123", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "123", 8); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + } + + TEST(FORMAT, fpstr_to_str_BAD_long) { + char output[8]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "123456", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1.23456"); + + fpstr_to_str(output, sizeof(output), "123456", 6); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "123456", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "12345", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "12345", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "123.45"); + + fpstr_to_str(output, sizeof(output), "123456", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1234.56"); + + fpstr_to_str(output, sizeof(output), "1234567", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "12345678", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "1234567890", 0); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "123456", 0); + EXPECT_EQ(std::string(output), "123456"); + } + + TEST(FORMAT, fpuint64_to_str_zeros) { + char output[100]; + printf("\n"); + + fpuint64_to_str(output, sizeof(output), 0, 9); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "0.000000000"); + + fpuint64_to_str(output, sizeof(output), 0, 1); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "0.0"); + + fpuint64_to_str(output, sizeof(output), 1, 1); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "0.1"); + + fpuint64_to_str(output, sizeof(output), 10, 1); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "1.0"); + } + + TEST(FORMAT, number_trimming) { + char output[100]; + + snprintf(output, sizeof(output), "0"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "0"); + + snprintf(output, sizeof(output), "10"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "10"); + + snprintf(output, sizeof(output), "10.10"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "10.1"); + + snprintf(output, sizeof(output), "0.0"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "0.0"); + + snprintf(output, sizeof(output), "0.00"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "0.0"); + + snprintf(output, sizeof(output), "0.01"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "0.01"); + + snprintf(output, sizeof(output), "0.010"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "0.01"); + + snprintf(output, sizeof(output), "0.010000"); + number_inplace_trimming(output, 1); + EXPECT_EQ(std::string(output), "0.01"); + } + + TEST(FORMAT, intstr_to_fpstr_inplace_trimming_leading) { + char number[100]; + printf("\n"); + + snprintf(number, sizeof(number), "0"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + snprintf(number, sizeof(number), "00"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + snprintf(number, sizeof(number), "0000"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + snprintf(number, sizeof(number), "00001"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "1"); + + snprintf(number, sizeof(number), "000011"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "11"); + + snprintf(number, sizeof(number), "10000"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "10000"); + } + + TEST(FORMAT, intstr_to_fpstr_inplace_empty) { + char number[100]; + printf("\n"); + + MEMZERO(number, sizeof(number)); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + MEMZERO(number, sizeof(number)); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.00000"); + + MEMZERO(number, sizeof(number)); + intstr_to_fpstr_inplace(number, sizeof(number), 10); + EXPECT_EQ(std::string(number), "0.0000000000"); + } + + TEST(FORMAT, intstr_to_fpstr_inplace) { + char number[100]; + printf("\n"); + + snprintf(number, sizeof(number), "1"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "1"); + + snprintf(number, sizeof(number), "123"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "123"); + + snprintf(number, sizeof(number), "0"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.00000"); + + snprintf(number, sizeof(number), "123"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.00123"); + + snprintf(number, sizeof(number), "1234"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.01234"); + + snprintf(number, sizeof(number), "12345"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.12345"); + + snprintf(number, sizeof(number), "123456"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "1.23456"); + + snprintf(number, sizeof(number), "1234567"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "12.34567"); + } + + TEST(INT64_TO_STR, Zero) { + char temp[10]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(0)); + EXPECT_STREQ(temp, "0"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, Positive_1234) { + char temp[10]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(1234)); + EXPECT_STREQ(temp, "1234"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, Negative_1234) { + char temp[10]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(-1234)); + EXPECT_STREQ(temp, "-1234"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, TooSmall_0) { + char temp[1]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(0)); + EXPECT_STREQ("Buffer too small", error); + } + + TEST(INT64_TO_STR, FitsJust) { + char temp[4]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(999)); + EXPECT_STREQ(temp, "999"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, TooSmall_10) { + char temp[2]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(10)); + EXPECT_STREQ("Buffer too small", error); + } + + TEST(INT64_TO_STR, Max) { + char temp[20]; + const char *error = int64_to_str(temp, sizeof(temp), std::numeric_limits::max()); + EXPECT_STREQ(temp, "9223372036854775807"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, Min) { + char temp[21]; + const char *error = int64_to_str(temp, sizeof(temp), std::numeric_limits::min()); + EXPECT_STREQ(temp, "-9223372036854775808"); + EXPECT_TRUE(error == nullptr); + } + + TEST(STR_TO_INT8, Min) { + char numberStr[] = "-128"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-128, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, Max) { + char numberStr[] = "127"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(127, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, Zero) { + char numberStr[] = "0"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(0, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, Hundred) { + char numberStr[] = "100"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, NegHundred) { + char numberStr[] = "-100"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, OutsideBoundsPositive) { + char numberStr[] = "128"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT8, OutsideBoundsNegative) { + char numberStr[] = "-129"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT8, DummyData_Positive) { + char numberStr[] = "100b0"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT8, DummyData_Negative) { + char numberStr[] = "-1002xx"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT64, Min) { + char numberStr[] = "-9223372036854775807"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-9223372036854775807, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, Max) { + char numberStr[] = "9223372036854775807"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(9223372036854775807, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, Zero) { + char numberStr[] = "0"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(0, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, Hundred) { + char numberStr[] = "100"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, NegHundred) { + char numberStr[] = "-100"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, DummyData_Positive) { + char numberStr[] = "100b0"; + char error = 0; + str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT64, DummyData_Negative) { + char numberStr[] = "-1002xx"; + char error = 0; + str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } +} diff --git a/deps/ledger-zxlib/tests/sigutils.cpp b/deps/ledger-zxlib/tests/sigutils.cpp new file mode 100644 index 00000000..21fde60c --- /dev/null +++ b/deps/ledger-zxlib/tests/sigutils.cpp @@ -0,0 +1,133 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" +#include +#include +#include +#include + +#include "sigutils.h" + +TEST(SIGUTILS, convertBasic) { + char inSignatureDERStr[] = "304402206878b5690514437a2342405029426cc2b25b4a03fc396fef845d656cf62bad2c022018610a8d37e3384245176ab49ddbdbe8da4133f661bf5ea7ad4e3d2b912d856f01"; + auto inSignatureDER = std::vector(71); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + char inSignatureDERStr_R[] = "6878b5690514437a2342405029426cc2b25b4a03fc396fef845d656cf62bad2c"; + char inSignatureDERStr_S[] = "18610a8d37e3384245176ab49ddbdbe8da4133f661bf5ea7ad4e3d2b912d856f"; + auto inSignatureDER_R = std::vector(32); + auto inSignatureDER_S = std::vector(32); + parseHexString(inSignatureDER_R.data(), inSignatureDER_R.size(), inSignatureDERStr_R); + parseHexString(inSignatureDER_S.data(), inSignatureDER_S.size(), inSignatureDERStr_S); + + EXPECT_THAT(R, ::testing::ElementsAreArray(inSignatureDER_R)); + EXPECT_THAT(S, ::testing::ElementsAreArray(inSignatureDER_S)); +} + +TEST(SIGUTILS, convertBasic2) { + char inSignatureDERStr[] = "30430220035942178e9e8d447cf9e6886f99c41bf942fb2880fd79aa2d4626489ec7821b021f6b3277dea0355c161d20a120ec9165500b5c9a2cd0fce1c4b8a5260bf6831f"; + auto inSignatureDER = std::vector(71); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + char inSignatureDERStr_R[] = "035942178e9e8d447cf9e6886f99c41bf942fb2880fd79aa2d4626489ec7821b"; + char inSignatureDERStr_S[] = "006b3277dea0355c161d20a120ec9165500b5c9a2cd0fce1c4b8a5260bf6831f"; + auto inSignatureDER_R = std::vector(32); + auto inSignatureDER_S = std::vector(32); + parseHexString(inSignatureDER_R.data(), inSignatureDER_R.size(), inSignatureDERStr_R); + parseHexString(inSignatureDER_S.data(), inSignatureDER_S.size(), inSignatureDERStr_S); + + char buffer[100]; + array_to_hexstr(buffer, sizeof(buffer), R, (int16_t) sizeof(R)); + std::cout << buffer << std::endl; + array_to_hexstr(buffer, sizeof(buffer), S, (int16_t) sizeof(S)); + std::cout << buffer << std::endl; + + EXPECT_THAT(R, ::testing::ElementsAreArray(inSignatureDER_R)); + EXPECT_THAT(S, ::testing::ElementsAreArray(inSignatureDER_S)); +} + +TEST(SIGUTILS, convertBasic3) { + char inSignatureDERStr[] = "3045022100e9b508a9cd66410b43992c01622cf9e1a6aa1353d836d7f428a6d1317f96f27d02200ca01cee5480388bad3802c08e0bcf357c091f3a5921e1e5d1e0e115dd14ff23"; + auto inSignatureDER = std::vector(71); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + char inSignatureDERStr_R[] = "e9b508a9cd66410b43992c01622cf9e1a6aa1353d836d7f428a6d1317f96f27d"; + char inSignatureDERStr_S[] = "0ca01cee5480388bad3802c08e0bcf357c091f3a5921e1e5d1e0e115dd14ff23"; + auto inSignatureDER_R = std::vector(32); + auto inSignatureDER_S = std::vector(32); + parseHexString(inSignatureDER_R.data(), inSignatureDER_R.size(), inSignatureDERStr_R); + parseHexString(inSignatureDER_S.data(), inSignatureDER_S.size(), inSignatureDERStr_S); + + EXPECT_THAT(R, ::testing::ElementsAreArray(inSignatureDER_R)); + EXPECT_THAT(S, ::testing::ElementsAreArray(inSignatureDER_S)); +} + +TEST(SIGUTILS, convertShort1) { + char inSignatureDERStr[] = "3041021e544670fe5627f2d483484582284f627d9cfd1e0ab123984e81611a8da4fc021f6d99f9afd3c4fa62cee8dff21786f9c23c8d2f524d8fd363acc6c6567dc380"; + char inSignatureDERStr_R[] = "0000544670fe5627f2d483484582284f627d9cfd1e0ab123984e81611a8da4fc"; + char inSignatureDERStr_S[] = "006d99f9afd3c4fa62cee8dff21786f9c23c8d2f524d8fd363acc6c6567dc380"; + + auto inSignatureDER = std::vector(sizeof(inSignatureDERStr)); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + + char R_str[200]; + char S_str[200]; + array_to_hexstr(R_str, sizeof(R_str), R, 32); + std::cout << R_str << std::endl; + array_to_hexstr(S_str, sizeof(S_str), S, 32); + std::cout << S_str << std::endl; + + EXPECT_STREQ(R_str, inSignatureDERStr_R); + EXPECT_STREQ(S_str, inSignatureDERStr_S); +} diff --git a/deps/ledger-zxlib/tests/zxformat.cpp b/deps/ledger-zxlib/tests/zxformat.cpp new file mode 100644 index 00000000..af65eb3c --- /dev/null +++ b/deps/ledger-zxlib/tests/zxformat.cpp @@ -0,0 +1,152 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include + +namespace { + TEST(FORMAT, nothingAdded) { + char buffer[10]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string(""); + + EXPECT_EQ(zxerr_ok, z_str3join(buffer, sizeof(buffer), prefix.c_str(), "")); + EXPECT_STREQ(buffer, "TEST"); + } + + TEST(FORMAT, noPrefix) { + char buffer[10]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string(""); + auto suffix = std::string("1"); + + EXPECT_EQ(zxerr_ok, z_str3join(buffer, sizeof(buffer), prefix.c_str(), suffix.c_str())); + EXPECT_STREQ(buffer, "TEST1"); + } + + TEST(FORMAT, prefixSimple) { + char buffer[10]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string("xyz "); + auto suffix = std::string("1"); + + EXPECT_EQ(zxerr_ok, z_str3join(buffer, sizeof(buffer), prefix.c_str(), suffix.c_str())); + EXPECT_STREQ(buffer, "xyz TEST1"); + } + + TEST(FORMAT, limitBuffer0) { + char buffer[10]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string("xyz"); + auto suffix = std::string("4"); + + EXPECT_EQ(zxerr_ok, z_str3join(buffer, sizeof(buffer), prefix.c_str(), suffix.c_str())); + EXPECT_STREQ(buffer, "xyzTEST4"); + } + + TEST(FORMAT, limitBuffer1) { + char buffer[9]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string("xyz"); + auto suffix = std::string("4"); + + EXPECT_EQ(zxerr_ok, z_str3join(buffer, sizeof(buffer), prefix.c_str(), suffix.c_str())); + EXPECT_STREQ(buffer, "xyzTEST4"); + } + + TEST(FORMAT, limitBuffer2) { + char buffer[8]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string("xyz"); + auto suffix = std::string("4"); + + EXPECT_EQ(zxerr_buffer_too_small, z_str3join(buffer, sizeof(buffer), prefix.c_str(), suffix.c_str())); + EXPECT_STREQ(buffer, "ERR???"); + } + + TEST(FORMAT, smallBuffer) { + char buffer[7]; + + snprintf(buffer, sizeof(buffer), "TEST"); + auto prefix = std::string("xyz"); + auto suffix = std::string("4"); + + EXPECT_EQ(zxerr_buffer_too_small, z_str3join(buffer, sizeof(buffer), prefix.c_str(), suffix.c_str())); + EXPECT_STREQ(buffer, "ERR???"); + } + + TEST(FORMAT, array2hexstr_1) { + uint8_t s[] = {0x12,0x34,0x56,0x78}; + char data[10]; + + auto length = array_to_hexstr(data, sizeof(data), s, sizeof(s)); + + EXPECT_STREQ(data, "12345678"); + } + + TEST(FORMAT, array2hexstr_2) { + uint8_t s[] = {0xFA, 0x5D, 0x34, 0x87}; + char data[10]; + + auto length = array_to_hexstr(data, sizeof(data), s, sizeof(s)); + + EXPECT_STREQ(data, "FA5D3487"); + } + + TEST(FORMAT, array2hexstr_small_buffer) { + uint8_t s[] = {0xFA, 0x5D, 0x34, 0x87}; + char data[4]; + + EXPECT_EQ(0, array_to_hexstr(data, sizeof(data), s, sizeof(s))); + } + + TEST(FORMAT, hexstr2array_1) { + char s[] = "12345678"; + uint8_t data[20]; + + auto length = hexstr_to_array(data, sizeof(data), s, strlen(s)); + + ASSERT_THAT(data[0], testing::Eq(0x12)); + ASSERT_THAT(data[1], testing::Eq(0x34)); + ASSERT_THAT(data[2], testing::Eq(0x56)); + ASSERT_THAT(data[3], testing::Eq(0x78)); + } + + TEST(FORMAT, hexstr2array_2) { + char s[] = "FA2345DE"; + uint8_t data[10]; + + auto length = hexstr_to_array(data, sizeof(data), s, strlen(s)); + + ASSERT_THAT(data[0], testing::Eq(0xFA)); + ASSERT_THAT(data[1], testing::Eq(0x23)); + ASSERT_THAT(data[2], testing::Eq(0x45)); + ASSERT_THAT(data[3], testing::Eq(0xDE)); + } + + TEST(FORMAT, hexstr2array_odd_value) { + char s[] = "FA2345DEA"; + uint8_t data[10]; + + EXPECT_EQ(0, hexstr_to_array(data, sizeof(data), s, strlen(s))); + } +} diff --git a/docs/APDUSPEC.md b/docs/APDUSPEC.md index 7d0a0312..de1d4a64 100644 --- a/docs/APDUSPEC.md +++ b/docs/APDUSPEC.md @@ -156,25 +156,40 @@ Returns the public key. ### INS_SIGN -Signs a transaction. The payload contains the transaction, split according to the size limit. +Signs a transaction. The payload contains the transaction, split according to the size limit, and possibly metadata with their Merkle tree proof. #### Command -| Field | Type | Content | Expected | -| ----- | -------- | ---------------------- | --------- | -| CLA | byte (1) | Application Identifier | 0x33 | -| INS | byte (1) | Instruction ID | 0x02 | -| P1 | byte (1) | Payload desc | 0 = init | -| | | | 1 = add | -| | | | 2 = last | -| P2 | byte (1) | ---- | not used | -| L | byte (1) | Bytes in payload | (depends) | - -The first packet/chunk includes only the derivation path - -All other packets/chunks contain data chunks that are described below - -##### First Packet +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | ------------------ | +| CLA | byte (1) | Application Identifier | 0x33 | +| INS | byte (1) | Instruction ID | 0x02 | +| P1 | byte (1) | Payload desc | 0 = init | +| | | | 1 = add | +| | | | 2 = final | +| | | | 3 = metadata | +| | | | 4 = MT proof | +| | | | 5 = MT proof final | +| | | | 10 = message final | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | (depends) | + +We use the gollowing types of payloads. Detailed descriptions of datafollows later: +- 0 = init: Initializes signing. Clears all buffers. Contains derivation path and crypto options. +- 1 = add: Appends chunk of a transaction/message +- 2 = final: Appends chunk of a transaction. Starts transaction signing without metadata. +- 3 = metadata: Transaction signing metadata (Like transaction name, script hash, e.t.c). Resets Merkle tree proof. +- 4 = MT proof: One Merkle tree proof step +- 5 = MT proof final: Final Merkle tree proof step. Starts transaction signing with metadata. +- 10 = message final: Appends chunk of a message. Starts message signing. + +There are three workflows now consisting of the following packets. +- Sign transaction with metadata: 1 init packet, 1-* add packets, 1 metadata packet, 4 MT proof packets, 1 MT proof final packet. +- Sign transaction without metadata: 1 init packet, 0-* add packets, 1 final packet. +- Sign message: 1 init packet, 0-* add packets, 1 message final packet. +The app does not enforce the exact order of the packets. Packets final and message final try so sign current tx/message. Packet 5 = MT proof final tries to sign current tx provided that the Merkle tree proof is correctly finished. + +##### Init Packet P1 = 0x00 | Field | Type | Content | Expected | | ------- | -------- | -------------------- | -------- | @@ -185,29 +200,114 @@ All other packets/chunks contain data chunks that are described below | Path[4] | byte (4) | Derivation Path Data | ? | | Options | byte (2) | Crypto options (LE) | ? | -##### Other Chunks/Packets +This clears data and sets detivation path and crypto options variable. + +##### Add Packet P1 = 0x01 -| Field | Type | Content | Expected | -| ----- | -------- | ------- | -------- | -| Data | bytes... | Message | | +| Field | Type | Content | Expected | +| ------- | ------- | ------------------------ | -------- | +| Message | bytes.. | RLP data/message to sign | | -Data is defined as: +Appends payload to transaction / message. + +##### Final Packet P1 = 0x02 | Field | Type | Content | Expected | | ------- | ------- | ---------------- | -------- | | Message | bytes.. | RLP data to sign | | +Signs the message without metadata (arbitrary transaction signing). This requires expert mode and is able to handle any transaction. The app shows script hash and tries to show transaction arguments and their types, or a message that they are too long to display. + +##### Metadata Packet P1 = 0x03 + +| Field | Type | Content | Expected | +| -------------- | ----------------- | ---------------- | -------- | +| Num. of hashes | byte (1) | number of hashes | | +| Script hash 1 | byte (32) | script SHA-256 | | +| Script hash 2 | byte (32) | script SHA-256 | | +| ... | | | | +| Script hash n | byte (32) | script SHA-256 | | +| Tx name | null term. string | name of tx | | +| Num. of args | byte (1) | num. of tx args | | +| Argument 1 | bytes | argument 1 | | +| Argument 2 | bytes | argument 2 | | +| ... | | | | +| Argument m | bytes | argument m | | + +and argument is either normal argument, + +| Field | Type | Content | Expected | +| -------------- | ----------------- | ----------------------------- | -------- | +| Argument type | byte (1) | 1 - normal | | +| | | 2 - optional | | +| Arg. name | null term. string | | | +| Arg. index | byte (1) | Order in which args are shown | | +| Value type | null term. string | Expected JSON value type | | +| JSON type | byte (1) | | 3-string | + +array argument, + +| Field | Type | Content | Expected | +| -------------- | ----------------- | ----------------------------- | -------- | +| Argument type | byte (1) | 3 - normal array | | +| Arr. min. len. | byte (1) | Array min. length | | +| Arr. min. len. | byte (1) | Array max. length | | +| Arg. name | null term. string | | | +| Arg. index | byte (1) | Order in which args are shown | | +| Value type | null term. string | Expected JSON value type | | +| JSON type | byte (1) | | 3-string | + +string argument (this exist to save metadata space), + +| Field | Type | Content | Expected | +| -------------- | ----------------- | ----------------------------- | -------- | +| Argument type | byte (1) | 4 - string | | +| Arg. name | null term. string | | | +| Arg. index | byte (1) | Order in which args are shown | | + +or enum argument + +| Field | Type | Content | Expected | +| -------------- | ----------------- | ----------------------------- | -------- | +| Argument type | byte (1) | 5 - hash algorithm | | +| | | 6 - signature algorithm | | +| | | 7 - node role | | +| Arg. name | null term. string | | | +| Arg. index | byte (1) | Order in which args are shown | | + +Loads metadata, restarts Merkle tree proof of the metadata. + +##### Merkle tree Packet P1 = 0x04 and 0x05 + + +| Field | Type | Content | Expected | +| ------------------- | ------------ | ---------------- | -------- | +| Merkle tree hash 1 | byte (32) | Merkle tree hash | | +| Merkle tree hash 2 | byte (32) | Merkle tree hash | | +| ... | | | | +| Merkle tree hash 7 | byte (32) | Merkle tree hash | | + +Validates Merkle tree node. Validates that previous hash (metadata hash or merkle tree node hash) is in the list of hashes. Computes new hash and increments merkle tree counter. Call with P1 = 0x05 starts the signing process with metadata. This requires that we are at the root of the merkle tree and that the hash value matches the one stored in the app. + +Four APDUs for four levels of internal merkle tree nodes. Each internal Merkle tree node has 7 children as 7 hashes fit into one APDU. APDU with P1=0x03 calculates metadata hash which corresponds to Merkle tree leaf value. Three subsequent P1=0x04 calls have to contain hashes from previous calls (either P1=0x03 or P1=0x04). After three calls with P1=0x04 there is call with P1=0x05, which works the same as P1=0x04 call, but it initiates transaction signing. + +##### Final message signing Packet P1 = 0x10 + +| Field | Type | Content | Expected | +| ------- | ------- | ------------------- | -------- | +| Message | bytes.. | Mesage data to sign | | + +Appends to data to message and initiates message signing. + #### Response -| Field | Type | Content | Note | -| ----------- | --------------- | ----------- | ------------------------- | -| R length | byte (1) | Length | R field | -| R field | byte (32) | Signature | R field | -| S length | byte (1) | Length | S field | -| S field | byte (32) | Signature | S field | -| V field | byte (1) | Signature | V field | -| SIG | byte (variable) | Signature | DER format (max 73 bytes) | -| SW1-SW2 | byte (2) | Return code | see list of return codes | +| Field | Type | Content | Note | +| ----------- | -------------- | ----------- | ------------------------ | +| secp256k1 R | byte (32) | Signature | | +| secp256k1 S | byte (32) | Signature | | +| secp256k1 V | byte (1) | Signature | | +| SIG | byte (varible) | Signature | DER format | +| SW1-SW2 | byte (2) | Return code | see list of return codes | --- diff --git a/js/.babelrc b/js/.babelrc new file mode 100644 index 00000000..8806109a --- /dev/null +++ b/js/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": [ + "@babel/preset-env" + ], + "plugins": [ + [ + "@babel/plugin-transform-runtime", + { + "regenerator": true + } + ] + ] +} diff --git a/js/.editorconfig b/js/.editorconfig new file mode 100644 index 00000000..2614d512 --- /dev/null +++ b/js/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{js,json,vue}] +indent_style = space +indent_size = 2 + +[*.sh] +indent_style = space +indent_size = 2 diff --git a/js/.eslintrc.json b/js/.eslintrc.json new file mode 100644 index 00000000..0038c4c3 --- /dev/null +++ b/js/.eslintrc.json @@ -0,0 +1,23 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "plugins": [ + ], + "extends": [ + ], + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "parser": "babel-eslint", + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "import/prefer-default-export": "off" + } +} diff --git a/js/.gitignore b/js/.gitignore new file mode 100644 index 00000000..db6a98d3 --- /dev/null +++ b/js/.gitignore @@ -0,0 +1,72 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +\.idea/ + +.vscode + +TODO\.md + +\dist +/certs/cert.pem +/certs/server.cert +/certs/server.key diff --git a/js/.npmignore b/js/.npmignore new file mode 100644 index 00000000..e69de29b diff --git a/js/LICENSE b/js/LICENSE new file mode 100644 index 00000000..2bd06e22 --- /dev/null +++ b/js/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Zondax GmbH + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/js/README.md b/js/README.md new file mode 100644 index 00000000..ecb0667a --- /dev/null +++ b/js/README.md @@ -0,0 +1,40 @@ +# @onflow/ledger + +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![npm version](https://badge.fury.io/js/%40onflow%2Fledger.svg)](https://www.npmjs.com/package/@onflow/ledger) + +This package provides a basic client library to communicate with the Flow App running in a Ledger Nano S/X + +We recommend using the npmjs package in order to receive updates/fixes. + +## Notes + +Use `yarn install` to avoid issues. + +## Minimal example + +This is very simple. First you need to use one of the transport classes provided by Ledger. + +```js +import TransportWebUSB from "@ledgerhq/hw-transport-webusb"; +import FlowApp from "@onflow/ledger"; + +transport = await TransportWebUSB.create(); +const app = new FlowApp(transport); +``` + +The `FlowApp` object will provide: + +```js +const response = await app.getVersion(); + +if (response.returnCode !== FlowApp.ERROR_CODE.NoError) { + console.log(`Error [${response.returnCode}] ${response.errorMessage}`); +} else { + console.log(response); +} +``` + +## Acknowledgements + +Developed by [Zondax GmbH](https://zondax.ch/) and [Vacuumlabs](https://vacuumlabs.com/). diff --git a/js/package-lock.json b/js/package-lock.json new file mode 100644 index 00000000..72fa5037 --- /dev/null +++ b/js/package-lock.json @@ -0,0 +1,14191 @@ +{ + "name": "@onflow/ledger", + "version": "0.10.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@onflow/ledger", + "version": "0.10.0", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.5", + "@ledgerhq/hw-transport": "^5.19.1" + }, + "devDependencies": { + "@babel/cli": "^7.10.5", + "@babel/core": "^7.10.5", + "@babel/node": "^7.10.5", + "@babel/plugin-transform-runtime": "^7.10.5", + "@babel/preset-env": "^7.10.4", + "@ledgerhq/hw-transport-node-hid": "^6.3.0", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.1.0", + "bip32": "^2.0.5", + "bip39": "^3.0.2", + "chai": "^4.3.4", + "core-js": "^3.6.5", + "crypto-js": "4.0.0", + "elliptic": "^6.5.4", + "eslint": "^7.4.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-plugin-import": "^2.22.0", + "index.js": "^0.0.3", + "jssha": "^3.2.0", + "prettier": "^2.0.5", + "secp256k1": "^4.0.1" + } + }, + "node_modules/@babel/cli": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", + "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", + "dev": true, + "dependencies": { + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "optionalDependencies": { + "chokidar": "^2.1.8" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "node_modules/@babel/core": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/generator": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.11.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/node": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.10.5.tgz", + "integrity": "sha512-suosS7zZ2roj+fYVCnDuVezUbRc0sdoyF0Gj/1FzWxD4ebbGiBGtL5qyqHH4NO34B5m4vWWYWgyNhSsrqS8vwA==", + "dev": true, + "dependencies": { + "@babel/register": "^7.10.5", + "commander": "^4.0.1", + "core-js": "^3.2.1", + "lodash": "^4.17.19", + "node-environment-flags": "^1.0.5", + "regenerator-runtime": "^0.13.4", + "resolve": "^1.13.1", + "v8flags": "^3.1.1" + }, + "bin": { + "babel-node": "bin/babel-node.js" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz", + "integrity": "sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", + "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.5", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.11.5.tgz", + "integrity": "sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w==", + "dev": true, + "dependencies": { + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "node_modules/@babel/traverse": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.3.0.tgz", + "integrity": "sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.3.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.3.0", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.3.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@jest/transform/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@jest/types": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.3.0.tgz", + "integrity": "sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ledgerhq/devices": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.23.0.tgz", + "integrity": "sha512-XR9qTwn14WwN8VSMsYD9NTX/TgkmrTnXEh0pIj6HMRZwFzBPzslExOcXuCm3V9ssgAEAxv3VevfV8UulvvZUXA==", + "dependencies": { + "@ledgerhq/errors": "^5.23.0", + "@ledgerhq/logs": "^5.23.0", + "rxjs": "^6.6.3" + } + }, + "node_modules/@ledgerhq/errors": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.23.0.tgz", + "integrity": "sha512-qtpX8aFrUUlYfOMu7BxTvxqUa8CniE+tEBpVEjYUhVbFdVJjM4ouwJD++RtQkMAU2c5jE7xb12WnUnf5BlAgLQ==" + }, + "node_modules/@ledgerhq/hw-transport": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.23.0.tgz", + "integrity": "sha512-ICTG3Bst62SkC+lYYFgpKk5G4bAOxeIvptXnTLOhf6VqeN7gdHfiRzZwNPnKzI2pxmcEVbBitgsxEIEQJmDKVA==", + "dependencies": { + "@ledgerhq/devices": "^5.23.0", + "@ledgerhq/errors": "^5.23.0", + "events": "^3.2.0" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.1.tgz", + "integrity": "sha512-H3kGFU6lDAZM7ef17nVGTCpgwPzDcbO8dwqvGoIDTopvlNgNqmzw95GT3aCosJMp04C9yYGyMPSF5UFjRX8ckg==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/hw-transport": "^6.27.1", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.1", + "@ledgerhq/logs": "^6.10.0", + "lodash": "^4.17.21", + "node-hid": "2.1.1", + "usb": "^1.7.0" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.1.tgz", + "integrity": "sha512-nsPo491bslP7QySXIB2asILxws7+t2V/0F4Hjc3IBEkHexH3iS+TmeegE5A72vDXhXKI4wskJ8Pp8Odcz9TN1A==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/hw-transport": "^6.27.1", + "@ledgerhq/logs": "^6.10.0", + "node-hid": "2.1.1" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/@ledgerhq/devices": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-6.27.1.tgz", + "integrity": "sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==", + "dev": true, + "dependencies": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/logs": "^6.10.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/@ledgerhq/errors": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.0.tgz", + "integrity": "sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg==", + "dev": true + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/@ledgerhq/hw-transport": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz", + "integrity": "sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/@ledgerhq/logs": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", + "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==", + "dev": true + }, + "node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid/node_modules/@ledgerhq/devices": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-6.27.1.tgz", + "integrity": "sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==", + "dev": true, + "dependencies": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/logs": "^6.10.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid/node_modules/@ledgerhq/errors": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.0.tgz", + "integrity": "sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg==", + "dev": true + }, + "node_modules/@ledgerhq/hw-transport-node-hid/node_modules/@ledgerhq/hw-transport": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz", + "integrity": "sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==", + "dev": true, + "dependencies": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "events": "^3.3.0" + } + }, + "node_modules/@ledgerhq/hw-transport-node-hid/node_modules/@ledgerhq/logs": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", + "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==", + "dev": true + }, + "node_modules/@ledgerhq/hw-transport-node-hid/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ledgerhq/logs": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.23.0.tgz", + "integrity": "sha512-88M8RkVHl44k6MAhfrYhx25opnJV24/2XpuTUVklID11f9rBdE+6RZ9OMs39dyX2sDv7TuzIPi5nTRoCqZMDYw==" + }, + "node_modules/@types/babel__core": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", + "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.14.tgz", + "integrity": "sha512-8w9szzKs14ZtBVuP6Wn7nMLRJ0D6dfB0VEBEyRgxrZ/Ln49aNMykrghM2FaNn4FJRzNppCSa0Rv9pBRM5Xc3wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", + "integrity": "sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.6.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", + "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, + "node_modules/acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true, + "optional": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.3.0.tgz", + "integrity": "sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.3.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz", + "integrity": "sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz", + "integrity": "sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz", + "integrity": "sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^26.2.0", + "babel-preset-current-node-syntax": "^0.1.3" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bip32": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", + "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", + "dev": true, + "dependencies": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bip32/node_modules/@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", + "dev": true + }, + "node_modules/bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "dev": true, + "dependencies": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "node_modules/bip39/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", + "dev": true + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", + "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001125", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz", + "integrity": "sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA==", + "dev": true + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "dependencies": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/crypto-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", + "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.564", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz", + "integrity": "sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz", + "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz", + "integrity": "sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", + "eslint-plugin-import": "^2.21.2" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", + "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.3", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/index.js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/index.js/-/index.js-0.0.3.tgz", + "integrity": "sha1-JzOx9IbciQ7QJpiQJPWC2DXFI6w=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz", + "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/jest-haste-map": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.3.0.tgz", + "integrity": "sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.3.0", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.3.0", + "jest-util": "^26.3.0", + "jest-worker": "^26.3.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/jest-haste-map/node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-haste-map/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jest-haste-map/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-serializer": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.3.0.tgz", + "integrity": "sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.3.0.tgz", + "integrity": "sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==", + "dev": true, + "dependencies": { + "@jest/types": "^26.3.0", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jest-util/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "dependencies": { + "leven": "^3.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dev": true, + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-hid": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz", + "integrity": "sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^3.0.2", + "prebuild-install": "^6.0.0" + }, + "bin": { + "hid-showdevices": "src/show-devices.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-hid/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.61", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", + "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true, + "optional": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz", + "integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/tiny-secp256k1": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.5.tgz", + "integrity": "sha512-duE2hSLSQIpHGzmK48OgRrGTi+4OTkXLC6aa86uOYQ6LLCYZSarVKIAvEtY7MoXjoL6bOXMSerEGMzrvW4SkDw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/usb": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/usb/-/usb-1.9.2.tgz", + "integrity": "sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.2.0", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/usb/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", + "dev": true, + "dependencies": { + "bs58check": "<3.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@babel/cli": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", + "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "dev": true, + "requires": { + "@babel/types": "^7.11.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/node": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.10.5.tgz", + "integrity": "sha512-suosS7zZ2roj+fYVCnDuVezUbRc0sdoyF0Gj/1FzWxD4ebbGiBGtL5qyqHH4NO34B5m4vWWYWgyNhSsrqS8vwA==", + "dev": true, + "requires": { + "@babel/register": "^7.10.5", + "commander": "^4.0.1", + "core-js": "^3.2.1", + "lodash": "^4.17.19", + "node-environment-flags": "^1.0.5", + "regenerator-runtime": "^0.13.4", + "resolve": "^1.13.1", + "v8flags": "^3.1.1" + } + }, + "@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz", + "integrity": "sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", + "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.5", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/register": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.11.5.tgz", + "integrity": "sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jest/transform": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.3.0.tgz", + "integrity": "sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.3.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.3.0", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.3.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.3.0.tgz", + "integrity": "sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@ledgerhq/devices": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.23.0.tgz", + "integrity": "sha512-XR9qTwn14WwN8VSMsYD9NTX/TgkmrTnXEh0pIj6HMRZwFzBPzslExOcXuCm3V9ssgAEAxv3VevfV8UulvvZUXA==", + "requires": { + "@ledgerhq/errors": "^5.23.0", + "@ledgerhq/logs": "^5.23.0", + "rxjs": "^6.6.3" + } + }, + "@ledgerhq/errors": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.23.0.tgz", + "integrity": "sha512-qtpX8aFrUUlYfOMu7BxTvxqUa8CniE+tEBpVEjYUhVbFdVJjM4ouwJD++RtQkMAU2c5jE7xb12WnUnf5BlAgLQ==" + }, + "@ledgerhq/hw-transport": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.23.0.tgz", + "integrity": "sha512-ICTG3Bst62SkC+lYYFgpKk5G4bAOxeIvptXnTLOhf6VqeN7gdHfiRzZwNPnKzI2pxmcEVbBitgsxEIEQJmDKVA==", + "requires": { + "@ledgerhq/devices": "^5.23.0", + "@ledgerhq/errors": "^5.23.0", + "events": "^3.2.0" + } + }, + "@ledgerhq/hw-transport-node-hid": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.1.tgz", + "integrity": "sha512-H3kGFU6lDAZM7ef17nVGTCpgwPzDcbO8dwqvGoIDTopvlNgNqmzw95GT3aCosJMp04C9yYGyMPSF5UFjRX8ckg==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/hw-transport": "^6.27.1", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.1", + "@ledgerhq/logs": "^6.10.0", + "lodash": "^4.17.21", + "node-hid": "2.1.1", + "usb": "^1.7.0" + }, + "dependencies": { + "@ledgerhq/devices": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-6.27.1.tgz", + "integrity": "sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==", + "dev": true, + "requires": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/logs": "^6.10.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "@ledgerhq/errors": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.0.tgz", + "integrity": "sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg==", + "dev": true + }, + "@ledgerhq/hw-transport": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz", + "integrity": "sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "events": "^3.3.0" + } + }, + "@ledgerhq/logs": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", + "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@ledgerhq/hw-transport-node-hid-noevents": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.1.tgz", + "integrity": "sha512-nsPo491bslP7QySXIB2asILxws7+t2V/0F4Hjc3IBEkHexH3iS+TmeegE5A72vDXhXKI4wskJ8Pp8Odcz9TN1A==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/hw-transport": "^6.27.1", + "@ledgerhq/logs": "^6.10.0", + "node-hid": "2.1.1" + }, + "dependencies": { + "@ledgerhq/devices": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-6.27.1.tgz", + "integrity": "sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==", + "dev": true, + "requires": { + "@ledgerhq/errors": "^6.10.0", + "@ledgerhq/logs": "^6.10.0", + "rxjs": "6", + "semver": "^7.3.5" + } + }, + "@ledgerhq/errors": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.0.tgz", + "integrity": "sha512-fQFnl2VIXh9Yd41lGjReCeK+Q2hwxQJvLZfqHnKqWapTz68NHOv5QcI0OHuZVNEbv0xhgdLhi5b65kgYeQSUVg==", + "dev": true + }, + "@ledgerhq/hw-transport": { + "version": "6.27.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz", + "integrity": "sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==", + "dev": true, + "requires": { + "@ledgerhq/devices": "^6.27.1", + "@ledgerhq/errors": "^6.10.0", + "events": "^3.3.0" + } + }, + "@ledgerhq/logs": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", + "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@ledgerhq/logs": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.23.0.tgz", + "integrity": "sha512-88M8RkVHl44k6MAhfrYhx25opnJV24/2XpuTUVklID11f9rBdE+6RZ9OMs39dyX2sDv7TuzIPi5nTRoCqZMDYw==" + }, + "@types/babel__core": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", + "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.14.tgz", + "integrity": "sha512-8w9szzKs14ZtBVuP6Wn7nMLRJ0D6dfB0VEBEyRgxrZ/Ln49aNMykrghM2FaNn4FJRzNppCSa0Rv9pBRM5Xc3wg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", + "integrity": "sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, + "@types/node": { + "version": "14.6.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", + "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.3.0.tgz", + "integrity": "sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==", + "dev": true, + "requires": { + "@jest/transform": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.3.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz", + "integrity": "sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz", + "integrity": "sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz", + "integrity": "sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.2.0", + "babel-preset-current-node-syntax": "^0.1.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip32": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", + "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", + "dev": true, + "requires": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "dependencies": { + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", + "dev": true + } + } + }, + "bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "dev": true, + "requires": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", + "dev": true + } + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserslist": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", + "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001125", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz", + "integrity": "sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", + "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.3.564", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz", + "integrity": "sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz", + "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-config-airbnb-base": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz", + "integrity": "sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.2" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", + "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.3", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "index.js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/index.js/-/index.js-0.0.3.tgz", + "integrity": "sha1-JzOx9IbciQ7QJpiQJPWC2DXFI6w=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz", + "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-haste-map": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.3.0.tgz", + "integrity": "sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.3.0", + "jest-util": "^26.3.0", + "jest-worker": "^26.3.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-serializer": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.3.0.tgz", + "integrity": "sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-util": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.3.0.tgz", + "integrity": "sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node-gyp-build": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "dev": true + }, + "node-hid": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.1.tgz", + "integrity": "sha512-Skzhqow7hyLZU93eIPthM9yjot9lszg9xrKxESleEs05V2NcbUptZc5HFqzjOkSmL0sFlZFr3kmvaYebx06wrw==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^3.0.2", + "prebuild-install": "^6.0.0" + }, + "dependencies": { + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-releases": { + "version": "1.1.61", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", + "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true, + "optional": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz", + "integrity": "sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "tiny-secp256k1": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.5.tgz", + "integrity": "sha512-duE2hSLSQIpHGzmK48OgRrGTi+4OTkXLC6aa86uOYQ6LLCYZSarVKIAvEtY7MoXjoL6bOXMSerEGMzrvW4SkDw==", + "dev": true, + "requires": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "usb": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/usb/-/usb-1.9.2.tgz", + "integrity": "sha512-dryNz030LWBPAf6gj8vyq0Iev3vPbCLHCT8dBw3gQRXRzVNsIdeuU+VjPp3ksmSPkeMAl1k+kQ14Ij0QHyeiAg==", + "dev": true, + "requires": { + "node-addon-api": "^4.2.0", + "node-gyp-build": "^4.3.0" + }, + "dependencies": { + "node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", + "dev": true, + "requires": { + "bs58check": "<3.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/js/package.json b/js/package.json new file mode 100644 index 00000000..dcc232db --- /dev/null +++ b/js/package.json @@ -0,0 +1,68 @@ +{ + "name": "@onflow/ledger", + "version": "0.11.0", + "description": "Node API for Flow App (Ledger Nano S/X)", + "license": "Apache-2.0", + "author": "Dapper Labs ", + "homepage": "https://onflow.org", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:onflow/ledger-app-flow.git" + }, + "contributors": [ + { + "name": "Zondax GmbH" + }, + { + "name": "Vacuumlabs" + } + ], + "keywords": [ + "Ledger", + "Javascript", + "Flow" + ], + "bugs": { + "url": "git@github.com:onflow/ledger-app-flow.git/issues" + }, + "dependencies": { + "@babel/runtime": "^7.10.5", + "@ledgerhq/hw-transport": "^6.30.5" + }, + "devDependencies": { + "@babel/cli": "^7.10.5", + "@babel/core": "^7.10.5", + "@babel/node": "^7.10.5", + "@babel/plugin-transform-runtime": "^7.10.5", + "@babel/preset-env": "^7.10.4", + "babel-eslint": "^10.1.0", + "core-js": "^3.6.5", + "eslint": "^7.4.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-plugin-import": "^2.22.0", + "index.js": "^0.0.3", + "prettier": "^2.0.5" + }, + "scripts": { + "build": "babel src --copy-files --out-dir dist", + "test": "node test/test.js" + }, + "moduleDirectories": [ + "node_modules", + "dist" + ], + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ], + "publishConfig": { + "access": "public" + } +} diff --git a/js/src/common.js b/js/src/common.js new file mode 100644 index 00000000..ddcd8b55 --- /dev/null +++ b/js/src/common.js @@ -0,0 +1,119 @@ +export const CLA = 0x33; +export const CHUNK_SIZE = 250; + +export const INS = { + GET_VERSION: 0x00, + GET_PUBKEY: 0x01, + SIGN: 0x02, + + SLOT_STATUS: 0x10, + GET_SLOT: 0x11, + SET_SLOT: 0x12, +}; + +export const P1_VALUES = { + ONLY_RETRIEVE: 0x00, + SHOW_ADDRESS_IN_DEVICE: 0x01, +}; + +export const ERROR_CODE = { + NoError: 0x9000, +}; + +export const PKLEN = 65; + +const ERROR_DESCRIPTION = { + 1: "U2F: Unknown", + 2: "U2F: Bad request", + 3: "U2F: Configuration unsupported", + 4: "U2F: Device Ineligible", + 5: "U2F: Timeout", + 14: "Timeout", + 0x9000: "No errors", + 0x9001: "Device is busy", + 0x6802: "Error deriving keys", + 0x6400: "Execution Error", + 0x6700: "Wrong Length", + 0x6982: "Empty Buffer", + 0x6983: "Output buffer too small", + 0x6984: "Data is invalid", + 0x6985: "Conditions not satisfied", + 0x6986: "Transaction rejected", + 0x6a80: "Bad key handle", + 0x6b00: "Invalid P1/P2", + 0x6d00: "Instruction not supported", + 0x6e00: "App does not seem to be open", + 0x6f00: "Unknown error", + 0x6f01: "Sign/verify error", +}; + +export function errorCodeToString(statusCode) { + if (statusCode in ERROR_DESCRIPTION) return ERROR_DESCRIPTION[statusCode]; + return `Unknown Status Code: ${statusCode}`; +} + +function isDict(v) { + return typeof v === "object" && v !== null && !(v instanceof Array) && !(v instanceof Date); +} + +export function processErrorResponse(response) { + if (response) { + if (isDict(response)) { + if (Object.prototype.hasOwnProperty.call(response, "statusCode")) { + return { + returnCode: response.statusCode, + errorMessage: errorCodeToString(response.statusCode), + }; + } + + if ( + Object.prototype.hasOwnProperty.call(response, "returnCode") && + Object.prototype.hasOwnProperty.call(response, "errorMessage") + ) { + return response; + } + } + return { + returnCode: 0xffff, + errorMessage: response.toString(), + }; + } + + return { + returnCode: 0xffff, + errorMessage: response.toString(), + }; +} + +export async function getVersion(transport) { + return transport.send(CLA, INS.GET_VERSION, 0, 0).then((response) => { + const errorCodeData = response.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + + let targetId = 0; + if (response.length >= 9) { + /* eslint-disable no-bitwise */ + targetId = (response[5] << 24) + (response[6] << 16) + (response[7] << 8) + (response[8] << 0); + /* eslint-enable no-bitwise */ + } + + return { + returnCode, + errorMessage: errorCodeToString(returnCode), + // /// + testMode: response[0] !== 0, + major: response[1], + minor: response[2], + patch: response[3], + deviceLocked: response[4] === 1, + targetId: targetId.toString(16), + }; + }, processErrorResponse); +} + +export function compareVersion(getVersionResponse, major, minor, patch) { + if (getVersionResponse.major !== major) return getVersionResponse.major < major ? -1 : 1; + if (getVersionResponse.minor !== minor) return getVersionResponse.minor < minor ? -1 : 1; + if (getVersionResponse.patch !== patch) return getVersionResponse.patch < patch ? -1 : 1; + return 0; +} \ No newline at end of file diff --git a/js/src/index.d.ts b/js/src/index.d.ts new file mode 100644 index 00000000..5e54237d --- /dev/null +++ b/js/src/index.d.ts @@ -0,0 +1,61 @@ +import Transport from "@ledgerhq/hw-transport"; + +export interface ResponseBase { + errorMessage: string; + returnCode: number; +} + +export interface ResponseAddress extends ResponseBase { + publicKey: string; + address: string; +} + +export interface ResponseVersion extends ResponseBase { + testMode: boolean; + major: number; + minor: number; + patch: number; + deviceLocked: boolean; + targetId: string; +} + +export interface ResponseAppInfo extends ResponseBase { + appName: string; + appVersion: string; + flagLen: number; + flagsValue: number; + flagRecovery: boolean; + flagSignedMcuCode: boolean; + flagOnboarded: boolean; + flagPINValidated: boolean; +} + +export interface ResponseSign extends ResponseBase { + signatureCompact: Buffer; + signatureDER: Buffer; +} + +export interface ResponseSlotStatus extends ResponseBase { + status: Buffer; +} + +export interface ResponseSlot extends ResponseBase { + slotIdx: number; + account: string; + path: string; +} + +export interface FlowApp { + new(transport: Transport): FlowApp; + + getVersion(): Promise; + getAppInfo(): Promise; + getAddressAndPubKey(path: string): Promise; + showAddressAndPubKey(path: string): Promise; + + slotStatus(): Promise; + getSlot(slotIdx: number): Promise; + setSlot(slotIdx: number, account: string, path: string): Promise; + + sign(path: string, message: Buffer): Promise; +} diff --git a/js/src/index.js b/js/src/index.js new file mode 100644 index 00000000..3f6d6776 --- /dev/null +++ b/js/src/index.js @@ -0,0 +1,312 @@ +/** ****************************************************************************** + * (c) 2019-2020 Zondax GmbH + * (c) 2016-2017 Ledger + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************* */ + +import { serializePath, validateCryptoOptions, printBIP44Path} from "./serializePath"; +import { signGetChunks, signIsLastAPDU } from "./signTransaction"; +import { CLA, compareVersion, ERROR_CODE, errorCodeToString, getVersion, INS, P1_VALUES, PKLEN, processErrorResponse } from "./common"; + +function processGetAddrResponse(response) { + let partialResponse = response; + + const errorCodeData = partialResponse.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + + const publicKey = Buffer.from(partialResponse.slice(0, PKLEN)); + partialResponse = partialResponse.slice(PKLEN); + const address = Buffer.from(partialResponse.slice(0, -2)).toString(); + + return { + publicKey, + address, + returnCode, + errorMessage: errorCodeToString(returnCode), + }; +} + +export default class FlowApp { + static get ErrorCode() { + return ERROR_CODE; + } + + static get Hash() { + return { + SHA2_256: 0x01, + SHA3_256: 0x03, + } + } + + static get Signature() { + return { + P256: 0x0200, + SECP256K1: 0x0300, + } + } + + constructor(transport) { + if (!transport) { + throw new Error("Transport has not been defined"); + } + this.transport = transport; + } + + async getVersion() { + return getVersion(this.transport) + .then((response) => { + return response; + }) + .catch((err) => processErrorResponse(err)); + } + + async appInfo() { + return this.transport.send(0xb0, 0x01, 0, 0).then((response) => { + const errorCodeData = response.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + + const result = {}; + + let appName = "err"; + let appVersion = "err"; + let flagLen = 0; + let flagsValue = 0; + + if (response[0] !== 1) { + // Ledger responds with format ID 1. There is no spec for any format != 1 + result.errorMessage = "response format ID not recognized"; + result.returnCode = 0x9001; + } else { + const appNameLen = response[1]; + appName = response.slice(2, 2 + appNameLen).toString("ascii"); + let idx = 2 + appNameLen; + const appVersionLen = response[idx]; + idx += 1; + appVersion = response.slice(idx, idx + appVersionLen).toString("ascii"); + idx += appVersionLen; + const appFlagsLen = response[idx]; + idx += 1; + flagLen = appFlagsLen; + flagsValue = response[idx]; + } + + return { + returnCode, + errorMessage: errorCodeToString(returnCode), + // // + appName, + appVersion, + flagLen, + flagsValue, + // eslint-disable-next-line no-bitwise + flagRecovery: (flagsValue & 1) !== 0, + // eslint-disable-next-line no-bitwise + flagSignedMcuCode: (flagsValue & 2) !== 0, + // eslint-disable-next-line no-bitwise + flagOnboarded: (flagsValue & 4) !== 0, + // eslint-disable-next-line no-bitwise + flagPINValidated: (flagsValue & 128) !== 0, + }; + }, processErrorResponse); + } + + async getAddressAndPubKey(path, cryptoOptions) { + validateCryptoOptions(cryptoOptions); + const serializedPath = serializePath(path, cryptoOptions); + return this.transport + .send(CLA, INS.GET_PUBKEY, P1_VALUES.ONLY_RETRIEVE, 0, serializedPath, [0x9000]) + .then(processGetAddrResponse, processErrorResponse); + } + + async showAddressAndPubKey(path, cryptoOptions) { + validateCryptoOptions(cryptoOptions); + const serializedPath = serializePath(path, cryptoOptions); + + return this.transport + .send(CLA, INS.GET_PUBKEY, P1_VALUES.SHOW_ADDRESS_IN_DEVICE, 0, serializedPath, [0x9000]) + .then(processGetAddrResponse, processErrorResponse); + } + + async sign(path, message, cryptoOptions, scriptHash) { + return this._signImplementation(path, message, cryptoOptions, scriptHash) + } + + async signMessage(path, message, cryptoOptions) { + return this._signImplementation(path, message, cryptoOptions, "Sign message") + } + + async _signImplementation(path, message, cryptoOptions, extraInfo) { + validateCryptoOptions(cryptoOptions); + const getVersionResponse = await this.getVersion(); + if (compareVersion(getVersionResponse, 0, 12, 0) < 0) { + return { + errorMessage: "Ledger version not supported", + returnCode: 4, + publicKey: null, + address: null, + } + } + const chunks = signGetChunks(path, cryptoOptions, message, extraInfo) + + if (typeof chunks === "string") { + return { + signatureCompact: null, + signatureDER: null, + returnCode: 0xffff, + errorMessage: chunks, + } + } + + let result = { + signatureCompact: null, + signatureDER: null, + returnCode: 0xffff, + errorMessage: "Result not initialized", + } + + for (let i = 0; i < chunks.length; i += 1) { + const payloadType = chunks[i].type + const p2 = chunks[i].p2 + const chunk = chunks[i].buffer + + // eslint-disable-next-line no-await-in-loop + result = await this.transport + .send(CLA, INS.SIGN, payloadType, p2, chunk, [0x9000, 0x6984, 0x6a80]) + .then((response) => { + const errorCodeData = response.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + const errorMessage = errorCodeToString(returnCode); + + // these error codes contain detailed error description in the response + if (returnCode === 0x6a80 || returnCode === 0x6984) { + const detailedErrorMessage = `${errorMessage} : ${response.slice(0, response.length - 2).toString("ascii")}`; + return { + signatureCompact: null, + signatureDER: null, + returnCode: returnCode, + errorMessage: detailedErrorMessage, + }; + } + + // last APDU, everything OK + if (returnCode == 0x9000 && signIsLastAPDU(payloadType)) { + const signatureCompact = response.slice(0, 65); + const signatureDER = response.slice(65, response.length - 2); + return { + signatureCompact, + signatureDER, + returnCode: returnCode, + errorMessage: errorMessage, + }; + } + + // Here return code should be 0x9000 as for error codes other than [0x9000, 0x6984, 0x6a80] send throws + return { + signatureCompact: null, + signatureDER: null, + returnCode: returnCode, + errorMessage: errorMessage, + }; + }, processErrorResponse); + + // If any error accours we do not send further APDUs + if (result.returnCode !== ERROR_CODE.NoError) { + break; + } + } + + return { + returnCode: result.returnCode, + errorMessage: result.errorMessage, + signatureCompact: result.signatureCompact, + signatureDER: result.signatureDER, + }; + } + + async slotStatus() { + return this.transport.send(CLA, INS.SLOT_STATUS, 0, 0).then((response) => { + const errorCodeData = response.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + + return { + returnCode, + errorMessage: errorCodeToString(returnCode), + status: response.slice(0, 64), + }; + }, processErrorResponse); + } + + async getSlot(slotIdx) { + if (isNaN(slotIdx) || slotIdx < 0 || slotIdx > 63) { + return { + returnCode: 0, + errorMessage: "slotIdx should be a number between 0 and 63 inclusively", + }; + } + + const payload = Buffer.from([slotIdx]); + return this.transport.send(CLA, INS.GET_SLOT, 0, 0, payload).then((response) => { + + const errorCodeData = response.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + + const pathStr = printBIP44Path(response.slice(8, 28)); + + return { + returnCode, + errorMessage: errorCodeToString(returnCode), + slotIdx: slotIdx, + account: response.slice(0, 8).toString("hex"), + path: pathStr, + options: response.length >= 32 ? response.readInt16LE(28) : null, //ledger app versions <0.9.12 do not return options + }; + }, processErrorResponse); + } + + async setSlot(slotIdx, account, path, cryptoOptions) { + if (isNaN(slotIdx) || slotIdx < 0 || slotIdx > 63) { + return { + returnCode: 0, + errorMessage: "slotIdx should be a number between 0 and 63 inclusively", + }; + } + + validateCryptoOptions(cryptoOptions); + + const serializedSlotIdx = Buffer.from([slotIdx]); + const serializedAccount = Buffer.from(account, "hex"); + + const serializedPath = serializePath(path, cryptoOptions); + + if (serializedAccount.length !== 8) { + return { + returnCode: 0, + errorMessage: "account is expected to be a hexstring 16 characters long", + }; + } + + const payload = Buffer.concat([ serializedSlotIdx, serializedAccount, serializedPath]); + + return this.transport.send(CLA, INS.SET_SLOT, 0, 0, payload).then((response) => { + const errorCodeData = response.slice(-2); + const returnCode = errorCodeData[0] * 256 + errorCodeData[1]; + + return { + returnCode, + errorMessage: errorCodeToString(returnCode), + }; + }, processErrorResponse); + } + +} diff --git a/js/src/serializePath.js b/js/src/serializePath.js new file mode 100644 index 00000000..34613b17 --- /dev/null +++ b/js/src/serializePath.js @@ -0,0 +1,82 @@ +import { compareVersion } from "./common"; + +const HARDENED = 0x80000000 + +export function serializePath(path, curveHashOption) { + if (typeof path !== "string") { + throw new Error("Path should be a string (e.g \"m/44'/1'/5'/0/3\")"); + } + + if (!path.startsWith("m")) { + throw new Error('Path should start with "m" (e.g "m/44\'/461\'/5\'/0/3")'); + } + + const pathArray = path.split("/"); + + if (pathArray.length !== 6) { + throw new Error("Invalid path. (e.g \"m/44'/1'/5'/0/3\")"); + } + + + const buf = Buffer.alloc(22); + buf.writeUInt16LE(curveHashOption, 20); + + for (let i = 1; i < pathArray.length; i += 1) { + let value = 0; + let child = pathArray[i]; + if (child.endsWith("'")) { + value += HARDENED; + child = child.slice(0, -1); + } + + const childNumber = Number(child); + + if (Number.isNaN(childNumber)) { + throw new Error(`Invalid path : ${child} is not a number. (e.g "m/44'/1'/5'/0/3")`); + } + + if (childNumber >= HARDENED) { + throw new Error("Incorrect child value (bigger or equal to 0x80000000)"); + } + + value += childNumber; + + buf.writeUInt32LE(value, 4 * (i - 1)); + } + + return buf; + } + + function printBIP44Item(v) { + let hardened = v >= 0x8000000; + return `${v & 0x7FFFFFFF}${hardened ? "'" : ""}`; + } + + export function printBIP44Path(pathBytes) { + if (pathBytes.length !== 20) { + throw new Error("Invalid bip44 path"); + } + + let pathValues = [0, 0, 0, 0, 0]; + for (let i = 0; i < 5; i += 1) { + pathValues[i] = pathBytes.readUInt32LE(4 * i); + } + + return `m/${ + printBIP44Item(pathValues[0]) + }/${ + printBIP44Item(pathValues[1]) + }/${ + printBIP44Item(pathValues[2]) + }/${ + printBIP44Item(pathValues[3]) + }/${ + printBIP44Item(pathValues[4]) + }`; + } + + export function validateCryptoOptions(cryptoOptions) { + if (typeof cryptoOptions !== "number" || !Number.isInteger(cryptoOptions) || cryptoOptions<0 || cryptoOptions>=65536) { + throw new Error("CryptoOptions should be an integer that fits into 16bits."); + } + } \ No newline at end of file diff --git a/js/src/signTransaction.js b/js/src/signTransaction.js new file mode 100644 index 00000000..2d250e90 --- /dev/null +++ b/js/src/signTransaction.js @@ -0,0 +1,91 @@ +import { CHUNK_SIZE } from "./common"; +import { serializePath } from "./serializePath"; +import { merkleIndex, merkleTree } from "./txMerkleTree" + +const PAYLOAD_TYPE = { + INIT: 0x00, + ADD: 0x01, + LAST: 0x02, + TX_METADATA: 0x03, + MERKLE_TREE: 0x04, + MERKLE_TREE_LAST: 0x05, + MESSAGE_LAST: 0x10, +} + +const P2_UNUSED = 0x00; + +export function signIsLastAPDU(type) { + return (type === PAYLOAD_TYPE.LAST || type === PAYLOAD_TYPE.MERKLE_TREE_LAST || PAYLOAD_TYPE.MESSAGE_LAST) +} + +/* + Prepare chunks functions +*/ +function prepareBasicChunks(serializedPathBuffer, message) { + const chunks = []; + + // First chunk (only path) + chunks.push({type: PAYLOAD_TYPE.INIT, p2: P2_UNUSED, buffer: serializedPathBuffer}); + + const messageBuffer = Buffer.from(message); + + const buffer = Buffer.concat([messageBuffer]); + for (let i = 0; i < buffer.length; i += CHUNK_SIZE) { + let end = i + CHUNK_SIZE; + if (i > buffer.length) { + end = buffer.length; + } + chunks.push({type: PAYLOAD_TYPE.ADD, p2: P2_UNUSED, buffer:buffer.slice(i, end)}); + } + + return chunks; +} + +//ExtraInfo is either +// - script hash from merkleIndex - initiates transaction signing with metadata +// - "Sign message" - initiates message signing +// - anything else - initiates transaction sining without metadata +export function signGetChunks(path, options, message, extraInfo) { + const serializedPath = serializePath(path, options); + const basicChunks = prepareBasicChunks(serializedPath, message) + + if (extraInfo == "Sign message") { + basicChunks[basicChunks.length-1].type = PAYLOAD_TYPE.MESSAGE_LAST + basicChunks[basicChunks.length-1].p2 = P2_UNUSED + return basicChunks; + } + + if (extraInfo == "arbitrary") { + basicChunks[basicChunks.length-1].type = PAYLOAD_TYPE.LAST + basicChunks[basicChunks.length-1].p2 = P2_UNUSED + return basicChunks; + } + + // We try to find hash in the merkle tree. If it is not there, we send the tx without metadata (arbitrary tx signing in expert mode) + const scriptHash = extraInfo + const merkleI = merkleIndex[scriptHash.slice(0, 16)] + if (merkleI === undefined) { + console.log("!!!!!!!!!!!!!!!!!!!1") + console.log(merkleI) + console.log(scriptHash.slice(0, 16)) + console.log("!!!!!!!!!!!!!!!!!!!1") + return []; + } + + // other chunks + const metadata = merkleTree.children[merkleI[0]].children[merkleI[1]].children[merkleI[2]].children[merkleI[3]].children[0] + const merkleTreeLevel1 = merkleTree.children[merkleI[0]].children[merkleI[1]].children[merkleI[2]].children.map((ch) => ch.hash).join('') + const merkleTreeLevel2 = merkleTree.children[merkleI[0]].children[merkleI[1]].children.map((ch) => ch.hash).join('') + const merkleTreeLevel3 = merkleTree.children[merkleI[0]].children.map((ch) => ch.hash).join('') + const merkleTreeLevel4 = merkleTree.children.map((ch) => ch.hash).join('') + + return [ + ...basicChunks, + { type: PAYLOAD_TYPE.TX_METADATA, p2: P2_UNUSED, buffer: Buffer.from(metadata, "hex"), }, + { type: PAYLOAD_TYPE.MERKLE_TREE, p2: P2_UNUSED, buffer: Buffer.from(merkleTreeLevel1, "hex"), }, + { type: PAYLOAD_TYPE.MERKLE_TREE, p2: P2_UNUSED, buffer: Buffer.from(merkleTreeLevel2, "hex"), }, + { type: PAYLOAD_TYPE.MERKLE_TREE, p2: P2_UNUSED, buffer: Buffer.from(merkleTreeLevel3, "hex"), }, + { type: PAYLOAD_TYPE.MERKLE_TREE_LAST, p2: P2_UNUSED, buffer: Buffer.from(merkleTreeLevel4, "hex"), }, + ] +} + diff --git a/js/src/txMerkleTree.js b/js/src/txMerkleTree.js new file mode 100644 index 00000000..4a1a5d75 --- /dev/null +++ b/js/src/txMerkleTree.js @@ -0,0 +1,2730 @@ +export const merkleTree = { + "hash": "735cf1a27bad047ca2a5125ea3316eca30b11911314a8935728c16280d2f6620", + "children": [ + { + "hash": "1558ab4cfb5964941db2fc676d05313b86f5d942336aca4d9e24f8b56d1b7d7a", + "children": [ + { + "hash": "fcdc17a0f2e78292d36c066caa52d36fb408fded1aad61a1929023d15e406ee9", + "children": [ + { + "hash": "fdc9ed4c7d1cdd61c7d54718392d3b0d250fe687ca5dc36e49707cb82888f459", + "children": [ + { + "hash": "c43cfe541b0628a223d0b531ae1c92b537d22438fd19fd98ecf8b7759a56699c", + "children": [ + "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003" + ] + }, + { + "hash": "85992afd3e94015265d19d9fc7c7cbe04e1a1496b2fd6473dcae0c6b404f77c8", + "children": [ + "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003" + ] + }, + { + "hash": "b5b81e2d8d86b60ca608b709cbe3c61fd45cd371699896cd26e915bda7814bdd", + "children": [ + "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003" + ] + }, + { + "hash": "eb6840289224d8506819dd85ba3a8b8df504de1079e5353e5ab36d20f987569f", + "children": [ + "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001" + ] + }, + { + "hash": "8f69d764860ca602c24cb13858d1cc69b94f37f1c34edf1156b3ab9409e8a7ef", + "children": [ + "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003" + ] + }, + { + "hash": "b022a37057dc012ce244a35a12a71ca047552658e04d49cdb92c6b9d0c706cc8", + "children": [ + "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003" + ] + }, + { + "hash": "1daeeae363c035bbf2446c0c50d742444fbf9c392eccbec90f9b70591f217cbb", + "children": [ + "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001" + ] + } + ] + }, + { + "hash": "a70ead9e24c865314c33b8768be2e8e2750fab13a3d6be4687949c1f3893b69c", + "children": [ + { + "hash": "89a752fa39b7d339b5a04635204216ff4278e278813e64f6b31c338cd3df4a0e", + "children": [ + "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003" + ] + }, + { + "hash": "b25b557e667aeddba8df949aa742b31a11ced37bf3bdcace14b59b568c9daa14", + "children": [ + "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003" + ] + }, + { + "hash": "bad7c2258efa36af460d217adf5b7739ba66dfd31d3c2441f88c01d355170bdc", + "children": [ + "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000" + ] + }, + { + "hash": "b32d0691dd4929520d2addca959ec126a63e6a01f1ad4947343c0768a3036f41", + "children": [ + "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003" + ] + }, + { + "hash": "a43b931de8c8c285d05762b822f4d36a8e0c5de4dbd5ce33467df492a673a899", + "children": [ + "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008" + ] + }, + { + "hash": "a2cac12372d6a5dab1cb8f8be672b75997c22a4ea701c9d23d0e0e2fb5b4de19", + "children": [ + "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003" + ] + }, + { + "hash": "df6227d64fed44dcd61eb061157b6a9a2e182f8fcd79fda4710c85af12255ae0", + "children": [ + "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + } + ] + }, + { + "hash": "32412631b4049669cbe83a3dfb6a6d56d34f7c67fc8eea50f674d45aebfc83c7", + "children": [ + { + "hash": "67ac47bc65b310ba21562b3fb8c1b436ba8b509fdfa7a0a70edd1c432d421ae7", + "children": [ + "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "9971a7634ebcf14d2dfe0402d186d9bd0fec69de373cc55e882de7f3c0059581", + "children": [ + "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "35ae4ac757793d273e6701e73734e4f56614e67c477d4ee692c67824d2f1d5b3", + "children": [ + "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "0d5445e0555e58eb96de8fdd7470b5b7225f73c82c68a8588afb3f5b31e9c10e", + "children": [ + "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000" + ] + }, + { + "hash": "44c44658ab36e0b3ed2ea3ef1cd86a292dd62b9e5430970a13973fd59b2c8b7a", + "children": [ + "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "44d6231310dc495279669eec80dce4093ca842aceb5d601b55fb37da492fe7a5", + "children": [ + "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "bb8882bd3ffbfee5e0e57b74d8d850c255e33cb7a8bfe5b624d71edb85dc9c2b", + "children": [ + "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003" + ] + } + ] + }, + { + "hash": "f2070a3be507580f1c50209a1121e1c980d81c0dd51b8e55adc5b5ddafa97adc", + "children": [ + { + "hash": "1db501d2b5dda1232062fba4dd77bf1b3bd7d4366a6aaf74ccf406cf2caf7e0b", + "children": [ + "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003" + ] + }, + { + "hash": "acb03d0e42854eb5c740c44a11766c7b5da2a80f4019c31e1e9260f1db23ae5b", + "children": [ + "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003" + ] + }, + { + "hash": "33fe26f945b44c9546cbdf940bef096cd4d6103692963a2f7f122c683a58d710", + "children": [ + "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003" + ] + }, + { + "hash": "9d766664f3c0a0ef7609cef3cf8a6e0fd1c69a847db1480492975bef77e565b1", + "children": [ + "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001" + ] + }, + { + "hash": "9e8bff812b2f0545ce028d95c6daf6ca0ae43e212cf3c24f3ccfeb5bd03316b7", + "children": [ + "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003" + ] + }, + { + "hash": "a1a73556f8af48486b19446e0fe0a0e706d551aeeea3f0f1e410804b3128a3ad", + "children": [ + "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + } + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + } + ] +} + +export const merkleIndex = { + "c4a7efd8708396e8": [ + 0, + 0, + 0, + 0 + ], + "1c9d1210f2bf129b": [ + 0, + 0, + 0, + 1 + ], + "6c7ab72837fdce77": [ + 0, + 0, + 0, + 2 + ], + "3ccbbfebf10c47c4": [ + 0, + 0, + 0, + 3 + ], + "0246076f1cf5d316": [ + 0, + 0, + 0, + 3 + ], + "c9b9a61562808127": [ + 0, + 0, + 0, + 4 + ], + "6e5b8c83a3e8445e": [ + 0, + 0, + 0, + 4 + ], + "0adc1ebe8246cf76": [ + 0, + 0, + 0, + 5 + ], + "d8f826a451d80869": [ + 0, + 0, + 0, + 5 + ], + "54fae25bb09f5a32": [ + 0, + 0, + 0, + 6 + ], + "a25e07dea5eb6083": [ + 0, + 0, + 0, + 6 + ], + "db0518029ca76e6f": [ + 0, + 0, + 1, + 0 + ], + "2cb2cd6408a35f08": [ + 0, + 0, + 1, + 0 + ], + "e4b837ce4d30be9b": [ + 0, + 0, + 1, + 1 + ], + "91fd4533a93f55a7": [ + 0, + 0, + 1, + 1 + ], + "861784e7ac135a9c": [ + 0, + 0, + 1, + 2 + ], + "69f30decc15bd781": [ + 0, + 0, + 1, + 2 + ], + "e093df9c425be9cd": [ + 0, + 0, + 1, + 3 + ], + "0a41e53ad3c9c1c1": [ + 0, + 0, + 1, + 3 + ], + "deb5f758f3eb3b12": [ + 0, + 0, + 1, + 4 + ], + "3b0b2bbc3a2ad674": [ + 0, + 0, + 1, + 4 + ], + "4c1ad61500bcd0d3": [ + 0, + 0, + 1, + 5 + ], + "f0a6cedb6703cd4c": [ + 0, + 0, + 1, + 5 + ], + "2d59f2c2c402f919": [ + 0, + 0, + 1, + 6 + ], + "f26c058a127500fc": [ + 0, + 0, + 1, + 6 + ], + "cf2b039500773524": [ + 0, + 0, + 2, + 0 + ], + "4c06589343524860": [ + 0, + 0, + 2, + 0 + ], + "4395faf2e515eea4": [ + 0, + 0, + 2, + 1 + ], + "c989e8b3beb9c2eb": [ + 0, + 0, + 2, + 1 + ], + "0b1721f2a8ef6c0c": [ + 0, + 0, + 2, + 2 + ], + "fe6adb75bf22b203": [ + 0, + 0, + 2, + 2 + ], + "c84843e3399be2ce": [ + 0, + 0, + 2, + 3 + ], + "1c8256fb857f6c6f": [ + 0, + 0, + 2, + 3 + ], + "5a07ca4c016973bd": [ + 0, + 0, + 2, + 4 + ], + "fbd8ebbfff7a88b6": [ + 0, + 0, + 2, + 4 + ], + "01fd4ea83d20510d": [ + 0, + 0, + 2, + 5 + ], + "c2484f17e640e285": [ + 0, + 0, + 2, + 5 + ], + "7e216d96d75414b2": [ + 0, + 0, + 2, + 6 + ], + "a0fad319bf8aede6": [ + 0, + 0, + 2, + 6 + ], + "a39eedbe19f252c2": [ + 0, + 0, + 3, + 0 + ], + "3578c7f3b015df3a": [ + 0, + 0, + 3, + 0 + ], + "135df83060f854d4": [ + 0, + 0, + 3, + 1 + ], + "8c7b8460f11ae786": [ + 0, + 0, + 3, + 1 + ], + "fdd40862af04dc36": [ + 0, + 0, + 3, + 2 + ], + "e12b16ef4218b8ce": [ + 0, + 0, + 3, + 2 + ], + "3a68789d8cd56e6c": [ + 0, + 0, + 3, + 3 + ], + "68d24560d9e49318": [ + 0, + 0, + 3, + 3 + ], + "094798e93daeacaa": [ + 0, + 0, + 3, + 4 + ], + "4a830e6f93f74179": [ + 0, + 0, + 3, + 4 + ], + "17ffcd6066789367": [ + 0, + 0, + 3, + 5 + ], + "038382a947fa96bf": [ + 0, + 0, + 3, + 5 + ] +} + diff --git a/js/test/test.js b/js/test/test.js new file mode 100644 index 00000000..c3f3d525 --- /dev/null +++ b/js/test/test.js @@ -0,0 +1,183 @@ +const assert = require('node:assert').strict; + +const hw_transport = require("@ledgerhq/hw-transport"); +const Transport = hw_transport.default + + +transport = new Transport() +transport.expected = []; + +transport.exchange = function(apdu) { + const pair = this.expected.shift(); + if (apdu.toString("hex") !== pair[0]) { + console.log("Expected") + console.log(pair[0]) + console.log("Received") + console.log(apdu.toString("hex")) + } + assert.equal(apdu.toString("hex"), pair[0]); + return Buffer.from(pair[1], "hex"); +} + + +const my_package = require (".."); +const FlowApp = my_package.default; + +const app = new FlowApp(transport); + +async function runTest() { + var res; + var exp; + + //getVersion + transport.expected = [ + ["3300000000", "6f01"], + ["3300000000", "00000c0000311000049000"], + ] + res = await app.getVersion() + assert.equal(res.returnCode, 0x6f01) + res = await app.getVersion() + assert.equal(res.returnCode, 0x9000) + assert.equal(res.testMode, false) + assert.equal(res.major, 0) + assert.equal(res.minor, 12) + assert.equal(res.patch, 0) + assert.equal(transport.expected.length, 0) + + //getPublicKey + transport.expected = [ + ["33010100162c0000801b0200800000008000000000000000000103", "6986"], + ["33010100162c0000801b0200800000008000000000000000000103", "040c77dedaa9a718b1eda82b66076ea44bb04dd0c6f583dc89a0d7fca32d12f672b659a8f8af25f1d0b74574b830f835ac6b4aacf6bbcd12f4554524149c54592d303430633737646564616139613731386231656461383262363630373665613434626230346464306336663538336463383961306437666361333264313266363732623635396138663861663235663164306237343537346238333066383335616336623461616366366262636431326634353534353234313439633534353932649000"], + ["33010000162c0000801b0200800000008000000000000000000103", "040c77dedaa9a718b1eda82b66076ea44bb04dd0c6f583dc89a0d7fca32d12f672b659a8f8af25f1d0b74574b830f835ac6b4aacf6bbcd12f4554524149c54592d303430633737646564616139613731386231656461383262363630373665613434626230346464306336663538336463383961306437666361333264313266363732623635396138663861663235663164306237343537346238333066383335616336623461616366366262636431326634353534353234313439633534353932649000"], + ] + const cryptoOptions = FlowApp.Hash["SHA2_256"] + FlowApp.Signature["SECP256K1"] + res = await app.showAddressAndPubKey("m/44'/539'/0'/0/0", cryptoOptions) + assert.equal(res.returnCode, 0x6986) + res = await app.showAddressAndPubKey("m/44'/539'/0'/0/0", cryptoOptions) + assert.equal(res.returnCode, 0x9000) + assert.equal(res.address, "040c77dedaa9a718b1eda82b66076ea44bb04dd0c6f583dc89a0d7fca32d12f672b659a8f8af25f1d0b74574b830f835ac6b4aacf6bbcd12f4554524149c54592d") + assert.equal(res.publicKey.toString("hex"), "040c77dedaa9a718b1eda82b66076ea44bb04dd0c6f583dc89a0d7fca32d12f672b659a8f8af25f1d0b74574b830f835ac6b4aacf6bbcd12f4554524149c54592d") + res = await app.getAddressAndPubKey("m/44'/539'/0'/0/0", cryptoOptions) + assert.equal(res.returnCode, 0x9000) + assert.equal(res.address, "040c77dedaa9a718b1eda82b66076ea44bb04dd0c6f583dc89a0d7fca32d12f672b659a8f8af25f1d0b74574b830f835ac6b4aacf6bbcd12f4554524149c54592d") + assert.equal(res.publicKey.toString("hex"), "040c77dedaa9a718b1eda82b66076ea44bb04dd0c6f583dc89a0d7fca32d12f672b659a8f8af25f1d0b74574b830f835ac6b4aacf6bbcd12f4554524149c54592d") + assert.equal(transport.expected.length, 0) + + //slotStatus + transport.expected = [ + ["3310000000", "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019000"], + ] + + res = await app.slotStatus() + assert.equal(res.returnCode, 0x9000) + assert.equal(res.status.toString("hex"), "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001") + assert.equal(transport.expected.length, 0) + + //getSot + transport.expected = [ + ["33110000010a", "6982"], + ["33110000010a", "e467b9dd11fa00df2c0000801b02008001020080000000000000000001039000"], + ] + res = await app.getSlot(10) + assert.equal(res.returnCode, 0x6982) + res = await app.getSlot(10) + assert.equal(res.returnCode, 0x9000) + assert.equal(res.account, "e467b9dd11fa00df") + assert.equal(res.path, "m/44'/539'/513'/0/0") + assert.equal(res.slotIdx, 10) + assert.equal(res.options, 769) + assert.equal(transport.expected.length, 0) + + //setSlot + transport.expected = [ + ["331200001f0ae467b9dd11fa00de2c0000801b0200800102008000000000010000000102", "9000"], + ] + const cryptoOptions2 = FlowApp.Hash["SHA2_256"] + FlowApp.Signature["P256"] + res = await app.setSlot(10, "e467b9dd11fa00de", "m/44'/539'/513'/0/1", cryptoOptions2) + assert.equal(res.returnCode, 0x9000) + assert.equal(transport.expected.length, 0) + + //signMessage + transport.expected = [ + ["3300000000", "00000b0000311000049000"], + ["3300000000", "00000c0000311000049000"], + ["33020000162c0000801b0200800102008000000000010000000103", "9000"], + ["330210005f546869732069732061206e696365206d657373616765207468617420686173206f6e6c7920646973706c617961626c65206368617261637465727320616e642069732073686f727420656e6f75676820746f20626520646973706c61796564", "0fd4106fb418aee7dc8b001b80090fb0b76e4b903323389b745c994d1b8b2f9140c9753ffbdd1811a383d1fd03660ad494e579cff95f96b177262490c7a3d98201304402200fd4106fb418aee7dc8b001b80090fb0b76e4b903323389b745c994d1b8b2f91022040c9753ffbdd1811a383d1fd03660ad494e579cff95f96b177262490c7a3d9829000"] + ] + const message = "546869732069732061206e696365206d657373616765207468617420686173206f6e6c7920646973706c617961626c65206368617261637465727320616e642069732073686f727420656e6f75676820746f20626520646973706c61796564" + res = await app.signMessage("m/44'/539'/513'/0/1", Buffer.from(message, "hex"), cryptoOptions) + assert.equal(res.returnCode, 0x04) + res = await app.signMessage("m/44'/539'/513'/0/1", Buffer.from(message, "hex"), cryptoOptions) + assert.equal(res.returnCode, 0x9000) + assert.equal(res.signatureCompact.toString("hex"), "0fd4106fb418aee7dc8b001b80090fb0b76e4b903323389b745c994d1b8b2f9140c9753ffbdd1811a383d1fd03660ad494e579cff95f96b177262490c7a3d98201") + assert.equal(res.signatureDER.toString("hex"), "304402200fd4106fb418aee7dc8b001b80090fb0b76e4b903323389b745c994d1b8b2f91022040c9753ffbdd1811a383d1fd03660ad494e579cff95f96b177262490c7a3d982") + assert.equal(transport.expected.length, 0) + + //signTransaction - arbitrary + transport.expected = [ + ["3300000000", "00000b0000311000049000"], + ["3300000000", "00000c0000311000049000"], + ["33020000162c0000801b0200800000008000000000000000000103", "9000"], + ["33020100faf906e9f906e5b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a2020", "9000"], + ["33020100fa20206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167", "9000"], + ["33020100fa6550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e", "9000"], + ["33020100fa6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822", "9000"], + ["33020100fa436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af9027cb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db9021b7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566", "9000"], + ["33020100fa336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a226638343562383430366534663433663739643363316438636163623364356633653761656564623239666561656234353539666462373161393765326664303433383536353331306538373637303033356438336263313066653637666533313464626135333633633831363534", "9000"], + ["33020100fa3539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4", "9000"], + ["3302020016040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0","93cd8452a5f6770cefcec110e66e82d5986aa734d71c7055a95b0b6a2b74423b69924df1208bd18f9ae21a3e6236b8fc5500c4cbb69266435ee5c0cb3c9e190d00304502210093cd8452a5f6770cefcec110e66e82d5986aa734d71c7055a95b0b6a2b74423b022069924df1208bd18f9ae21a3e6236b8fc5500c4cbb69266435ee5c0cb3c9e190d9000"], + ] + + const tx = "f906e9f906e5b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f646" + + "5207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f" + + "646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e6" + + "7436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c" + + "6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a20202020202" + + "02020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b" + + "696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207" + + "075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f722074686520" + + "6d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e61646" + + "45075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e" + + "65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af9027cb85c7b2274797065223a22537472696e67222c2276616c7565223a22383835343933333565316462376235623436633261643538646462373" + + "06237613435653737306363356665373739363530626132366631306536626165356536227db9021b7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a226638343562383430366534" + + "6634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356" + + "436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a22663834356238343036653466343366373964336331643863616362336435663365376165656462323966656165" + + "62343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b227" + + "4797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030" + + "333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f" + + "19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0" + res = await app.sign("m/44'/539'/0'/0/0", Buffer.from(tx, "hex"), cryptoOptions, "arbitrary") + assert.equal(res.returnCode, 0x04) + res = await app.sign("m/44'/539'/0'/0/0", Buffer.from(tx, "hex"), cryptoOptions, "arbitrary") + assert.equal(res.returnCode, 0x9000) + assert.equal(res.signatureCompact.toString("hex"), "93cd8452a5f6770cefcec110e66e82d5986aa734d71c7055a95b0b6a2b74423b69924df1208bd18f9ae21a3e6236b8fc5500c4cbb69266435ee5c0cb3c9e190d00") + assert.equal(res.signatureDER.toString("hex"), "304502210093cd8452a5f6770cefcec110e66e82d5986aa734d71c7055a95b0b6a2b74423b022069924df1208bd18f9ae21a3e6236b8fc5500c4cbb69266435ee5c0cb3c9e190d") + assert.equal(transport.expected.length, 0) + + //signTransaction - merkle tree. This needs to be fixed when merkle tree changes. FA.01, only metadata (330203) and proof is important (330204, 330205) + //metadata: "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003" + //proof1 + transport.expected = [ + ["3300000000", "00000c0000311000049000"], + ["33020000162c0000801b0200800102008000000000000000000103", "9000"], + ["3302010002f904","9000"], + ["330203009002c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", "9000"], + ["33020400e0c43cfe541b0628a223d0b531ae1c92b537d22438fd19fd98ecf8b7759a56699c85992afd3e94015265d19d9fc7c7cbe04e1a1496b2fd6473dcae0c6b404f77c8b5b81e2d8d86b60ca608b709cbe3c61fd45cd371699896cd26e915bda7814bddeb6840289224d8506819dd85ba3a8b8df504de1079e5353e5ab36d20f987569f8f69d764860ca602c24cb13858d1cc69b94f37f1c34edf1156b3ab9409e8a7efb022a37057dc012ce244a35a12a71ca047552658e04d49cdb92c6b9d0c706cc81daeeae363c035bbf2446c0c50d742444fbf9c392eccbec90f9b70591f217cbb", "9000"], + ["33020400e0fdc9ed4c7d1cdd61c7d54718392d3b0d250fe687ca5dc36e49707cb82888f459a70ead9e24c865314c33b8768be2e8e2750fab13a3d6be4687949c1f3893b69c32412631b4049669cbe83a3dfb6a6d56d34f7c67fc8eea50f674d45aebfc83c7f2070a3be507580f1c50209a1121e1c980d81c0dd51b8e55adc5b5ddafa97adc63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", "9000"], + ["33020400e0fcdc17a0f2e78292d36c066caa52d36fb408fded1aad61a1929023d15e406ee988bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad9192988bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad9192988bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad9192988bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad9192988bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad9192988bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", "9000"], + ["33020500e01558ab4cfb5964941db2fc676d05313b86f5d942336aca4d9e24f8b56d1b7d7a94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", "47fba63d87cac1a4d3d6345eb9ad4a8197d15cad816326675b950dc084fc90eb09a4c529640f92a5f07c4f54221f26f08a09c3d635cac6cc633050e0dff9e844003044022047fba63d87cac1a4d3d6345eb9ad4a8197d15cad816326675b950dc084fc90eb022009a4c529640f92a5f07c4f54221f26f08a09c3d635cac6cc633050e0dff9e8449000"], + ] + + tx2 = "f904" + // This needs to be fixed if hash chamges. FA.01 + scriptHash = "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + res = await app.sign("m/44'/539'/513'/0/0", Buffer.from(tx2, "hex"), cryptoOptions, scriptHash) + assert.equal(res.returnCode, 0x9000) + assert.equal(res.signatureCompact.toString("hex"), "47fba63d87cac1a4d3d6345eb9ad4a8197d15cad816326675b950dc084fc90eb09a4c529640f92a5f07c4f54221f26f08a09c3d635cac6cc633050e0dff9e84400") + assert.equal(res.signatureDER.toString("hex"), "3044022047fba63d87cac1a4d3d6345eb9ad4a8197d15cad816326675b950dc084fc90eb022009a4c529640f92a5f07c4f54221f26f08a09c3d635cac6cc633050e0dff9e844") + assert.equal(transport.expected.length, 0) +} + +runTest() + + diff --git a/js/vue.config.js b/js/vue.config.js new file mode 100644 index 00000000..72fd1a2c --- /dev/null +++ b/js/vue.config.js @@ -0,0 +1,3 @@ +const fs = require("fs"); + +module.exports = {}; diff --git a/js/yarn.lock b/js/yarn.lock new file mode 100644 index 00000000..0409b46b --- /dev/null +++ b/js/yarn.lock @@ -0,0 +1,3201 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/cli@^7.10.5": + version "7.11.6" + resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz" + integrity sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg== + dependencies: + commander "^4.0.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.19" + make-dir "^2.1.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.1.8" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz" + integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.10.5": + version "7.11.6" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz" + integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.6" + "@babel/helper-module-transforms" "^7.11.0" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.11.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": + version "7.11.6" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== + dependencies: + "@babel/types" "^7.11.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== + dependencies: + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz" + integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.11.4" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz" + integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz" + integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz" + integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/template" "^7.10.4" + "@babel/types" "^7.11.0" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.11.4" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz" + integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz" + integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/node@^7.10.5": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/node/-/node-7.10.5.tgz" + integrity sha512-suosS7zZ2roj+fYVCnDuVezUbRc0sdoyF0Gj/1FzWxD4ebbGiBGtL5qyqHH4NO34B5m4vWWYWgyNhSsrqS8vwA== + dependencies: + "@babel/register" "^7.10.5" + commander "^4.0.1" + core-js "^3.2.1" + lodash "^4.17.19" + node-environment-flags "^1.0.5" + regenerator-runtime "^0.13.4" + resolve "^1.13.1" + v8flags "^3.1.1" + +"@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.7.0": + version "7.11.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz" + integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== + +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz" + integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz" + integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz" + integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.11.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz" + integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz" + integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== + dependencies: + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz" + integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz" + integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@^7.10.5": + version "7.11.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz" + integrity sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz" + integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz" + integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.10.4": + version "7.11.5" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz" + integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== + dependencies: + "@babel/compat-data" "^7.11.0" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-export-namespace-from" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.11.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.11.0" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.11.5" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/register@^7.10.5": + version "7.11.5" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.11.5.tgz" + integrity sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w== + dependencies: + find-cache-dir "^2.0.0" + lodash "^4.17.19" + make-dir "^2.1.0" + pirates "^4.0.0" + source-map-support "^0.5.16" + +"@babel/runtime@^7.10.5", "@babel/runtime@^7.8.4": + version "7.11.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.7.0": + version "7.11.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz" + integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.5" + "@babel/types" "^7.11.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.11.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@ledgerhq/devices@^8.2.2": + version "8.2.2" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.2.2.tgz#d6d758182d690ad66e14f88426c448e8c54d259d" + integrity sha512-SKahGA4p0mZ3ovypOJ2wa5mUvUkArE3HBrwWKYf+cRs+t/Licp3OJfhj+DHIxP3AfyH2xR6CFFWECYHeKwGsDQ== + dependencies: + "@ledgerhq/errors" "^6.16.3" + "@ledgerhq/logs" "^6.12.0" + rxjs "^7.8.1" + semver "^7.3.5" + +"@ledgerhq/errors@^6.16.3": + version "6.16.3" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.16.3.tgz#646f68cc7e6e8d5126bce1ca06140c5ad963bee8" + integrity sha512-3w7/SJVXOPa9mpzyll7VKoKnGwDD3BzWgN1Nom8byR40DiQvOKjHX+kKQausCedTHVNBn9euzPCNsftZ9+mxfw== + +"@ledgerhq/hw-transport@^6.30.5": + version "6.30.5" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.30.5.tgz#841c9e4bb3849536db110ca2894d693d55bf54fd" + integrity sha512-JMl//7BgPBvWxrWyMu82jj6JEYtsQyOyhYtonWNgtxn6KUZWht3gU4gxmLpeIRr+DiS7e50mW7m3GA+EudZmmA== + dependencies: + "@ledgerhq/devices" "^8.2.2" + "@ledgerhq/errors" "^6.16.3" + "@ledgerhq/logs" "^6.12.0" + events "^3.3.0" + +"@ledgerhq/logs@^6.12.0": + version "6.12.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.12.0.tgz#ad903528bf3687a44da435d7b2479d724d374f5d" + integrity sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA== + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn@^7.4.0: + version "7.4.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: + version "6.12.4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.14.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-lite@^1.0.30001125: + version "1.0.30001125" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001125.tgz" + integrity sha512-9f+r7BW8Qli917mU3j0fUaTweT3f3vnX/Lcs+1C73V+RADmFme+Ih0Br8vONQi3X0lseOe6ZHfsZLCA8MSjxUA== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +convert-source-map@^1.1.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@^3.2.1, core-js@^3.6.5: + version "3.6.5" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +electron-to-chromium@^1.3.564: + version "1.3.564" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.564.tgz" + integrity sha512-fNaYN3EtKQWLQsrKXui8mzcryJXuA0LbCLoizeX6oayG2emBaS5MauKjCPAvc29NEY4FpLHIUWiP+Y0Bfrs5dg== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz" + integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-airbnb-base@^14.2.0: + version "14.2.0" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz" + integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== + dependencies: + confusing-browser-globals "^1.0.9" + object.assign "^4.1.0" + object.entries "^1.1.2" + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.4.0: + version "7.8.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz" + integrity sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.3" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.3.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.1.3: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.2.4" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +index.js@^0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/index.js/-/index.js-0.0.3.tgz" + integrity sha1-JzOx9IbciQ7QJpiQJPWC2DXFI6w= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz" + integrity sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg== + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nan@^2.12.1: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +node-environment-flags@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-releases@^1.1.61: + version "1.1.61" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz" + integrity sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3: + version "2.1.0" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^2.0.5: + version "2.1.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.1.1.tgz" + integrity sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.0.2: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^7.3.5: + version "7.3.7" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16: + version "0.5.19" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +v8flags@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz" + integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/ledger_app.toml b/ledger_app.toml index 60857277..aaf2b49c 100644 --- a/ledger_app.toml +++ b/ledger_app.toml @@ -2,3 +2,7 @@ build_directory = "./" sdk = "C" devices = ["nanos", "nanos+", "nanox", "stax"] + +[tests] +unit_directory = "./unit-tests/" +pytest_directory = "./tests/" diff --git a/src/account.c b/src/account.c index 37fe2908..01efb2eb 100644 --- a/src/account.c +++ b/src/account.c @@ -62,8 +62,10 @@ zxerr_t slot_getItem(int8_t displayIdx, zemu_log_stack("slot_getItem"); *pageCount = 1; + // selects workflow according to what type of slot operation was detected. switch (tmp_slotop) { case SLOT_OP_SET: { + // screens switch (displayIdx) { case 0: { snprintf(outKey, outKeyLen, "Set"); @@ -94,6 +96,7 @@ zxerr_t slot_getItem(int8_t displayIdx, const account_slot_t *oldSlot = (const account_slot_t *) &N_slot_store.slot[tmp_slotIdx]; switch (displayIdx) { + // screens case 0: { snprintf(outKey, outKeyLen, "Update"); snprintf(outVal, outValLen, "Account %d", tmp_slotIdx); @@ -139,6 +142,7 @@ zxerr_t slot_getItem(int8_t displayIdx, case SLOT_UP_DELETE: { const account_slot_t *oldSlot = (const account_slot_t *) &N_slot_store.slot[tmp_slotIdx]; + // screens switch (displayIdx) { case 0: { snprintf(outKey, outKeyLen, "Delete"); diff --git a/src/account.h b/src/account.h index 991243cc..59b0a54a 100644 --- a/src/account.h +++ b/src/account.h @@ -38,8 +38,10 @@ typedef struct { extern account_slot_t tmp_slot; extern uint8_t tmp_slotIdx; +/// Return the number of items in the address view zxerr_t slot_getNumItems(uint8_t *num_items); +/// Gets an specific item from the slot view (including paging) zxerr_t slot_getItem(int8_t displayIdx, char *outKey, uint16_t outKeyLen, @@ -48,16 +50,20 @@ zxerr_t slot_getItem(int8_t displayIdx, uint8_t pageIdx, uint8_t *pageCount); +// Updates the slot +void app_slot_setSlot(); + +// Gets status of all slots zxerr_t slot_status(uint8_t *out, uint16_t outLen); +// Gets data from he slot zxerr_t slot_getSlot(uint8_t slotIndex, account_slot_t *out); +// Parses and stores buffer data zxerr_t slot_parseSlot(uint8_t *buffer, uint16_t bufferLen); zxerr_t slot_serializeSlot(const account_slot_t *slot, uint8_t *buffer, uint16_t *bufferLen); -void app_slot_setSlot(); - void loadHdPathAndAddressFromSlot(); void loadAddressCompareHdPathFromSlot(); diff --git a/src/apdu_handler.c b/src/apdu_handler.c index 9763b538..4e7cbcd1 100644 --- a/src/apdu_handler.c +++ b/src/apdu_handler.c @@ -32,6 +32,7 @@ #include "zxformat.h" #include "hdpath.h" #include "parser_impl.h" +#include "message.h" __Z_INLINE void handleGetPubkey(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { hasPubkey = false; @@ -88,33 +89,67 @@ __Z_INLINE void handleGetPubkey(volatile uint32_t *flags, volatile uint32_t *tx, } __Z_INLINE void handleSign(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { - if (!process_chunk(tx, rx)) { - THROW(APDU_CODE_OK); - } - - const char *error_msg = tx_parse(); - - if (error_msg != NULL) { - int error_msg_length = strlen(error_msg); - MEMCPY(G_io_apdu_buffer, error_msg, error_msg_length); - *tx += (error_msg_length); - THROW(APDU_CODE_DATA_INVALID); - } - - show_address = SHOW_ADDRESS_NONE; - loadAddressCompareHdPathFromSlot(); + zemu_log("HandleSign.\n"); + process_chunk_response_t callType = process_chunk(tx, rx); + + switch (callType) { + case PROCESS_CHUNK_NOT_FINISHED: + zemu_log("Continue processing chunks.\n"); + THROW(APDU_CODE_OK); + case PROCESS_CHUNK_FINISHED_MESSAGE:; + zemu_log("Processing chunks finished, sign message.\n"); + zxerr_t err = message_parse(); + if (err != zxerr_ok) { + const char *error_msg = "Invalid message"; + uint16_t error_msg_length = strlen(error_msg); + if (error_msg_length > sizeof(G_io_apdu_buffer)) { + THROW(APDU_CODE_UNKNOWN); + } + MEMCPY(G_io_apdu_buffer, error_msg, error_msg_length); + *tx += (error_msg_length); + ZEMU_TRACE(); + THROW(APDU_CODE_DATA_INVALID); + } + CHECK_APP_CANARY() + view_review_init(message_getItem, message_getNumItems, app_sign_message); + view_review_show(REVIEW_TXN); + *flags |= IO_ASYNCH_REPLY; + break; + case PROCESS_CHUNK_FINISHED_NO_METADATA: + case PROCESS_CHUNK_FINISHED_WITH_METADATA:; + zemu_log("Processing chunks finished, sign transaction.\n"); + const char *error_msg = tx_parse(callType); + + if (error_msg != NULL) { + uint16_t error_msg_length = strlen(error_msg); + if (error_msg_length >= sizeof(G_io_apdu_buffer)) { + THROW(APDU_CODE_UNKNOWN); + } + MEMCPY(G_io_apdu_buffer, error_msg, error_msg_length); + *tx += (error_msg_length); + ZEMU_TRACE(); + zemu_log(error_msg); + THROW(APDU_CODE_DATA_INVALID); + } + show_address = SHOW_ADDRESS_NONE; + loadAddressCompareHdPathFromSlot(); + + // if we found matching hdPath on slot 0 + if (show_address == SHOW_ADDRESS_YES || + show_address == SHOW_ADDRESS_YES_HASH_MISMATCH) { + checkAddressUsedInTx(); + } else { + addressUsedInTx = 0; + } - // if we found matching hdPath on slot 0 - if (show_address == SHOW_ADDRESS_YES || show_address == SHOW_ADDRESS_YES_HASH_MISMATCH) { - checkAddressUsedInTx(); - } else { - addressUsedInTx = 0; + CHECK_APP_CANARY() + view_review_init(tx_getItem, tx_getNumItems, app_sign); + view_review_show(REVIEW_TXN); + *flags |= IO_ASYNCH_REPLY; + break; + default: + THROW(APDU_CODE_INVALIDP1P2); } - - CHECK_APP_CANARY() - view_review_init(tx_getItem, tx_getNumItems, app_sign); - view_review_show(REVIEW_TXN); - *flags |= IO_ASYNCH_REPLY; } __Z_INLINE void handleSlotStatus(__Z_UNUSED volatile uint32_t *flags, @@ -171,10 +206,6 @@ __Z_INLINE void handleGetSlot(__Z_UNUSED volatile uint32_t *flags, __Z_INLINE void handleSetSlot(volatile uint32_t *flags, __Z_UNUSED volatile uint32_t *tx, uint32_t rx) { - if (rx != 5 + 1 + 8 + 20 + 2) { - THROW(APDU_CODE_DATA_INVALID); - } - zxerr_t err = slot_parseSlot(G_io_apdu_buffer + OFFSET_DATA, rx - OFFSET_DATA); if (err != zxerr_ok) { THROW(APDU_CODE_DATA_INVALID); diff --git a/src/coin.h b/src/coin.h index 6d71b37a..e64737fb 100644 --- a/src/coin.h +++ b/src/coin.h @@ -45,9 +45,6 @@ typedef struct { #define SECP256_PK_LEN 65u -#define COIN_AMOUNT_DECIMAL_PLACES 0 // FIXME: Adjust this -#define COIN_SUPPORTED_TX_VERSION 0 - #define MENU_MAIN_APP_LINE1 "Flow" #define MENU_MAIN_APP_LINE2 "Ready" #define APPVERSION_LINE1 "Version" @@ -55,6 +52,8 @@ typedef struct { #define MAIN_SLOT 0 +#define DOMAIN_TAG_LENGTH 32 + #ifdef __cplusplus } #endif diff --git a/src/common/actions.c b/src/common/actions.c index 2d265cd3..256dfe10 100644 --- a/src/common/actions.c +++ b/src/common/actions.c @@ -18,3 +18,15 @@ #include "actions.h" uint16_t action_addr_len; + +// UTF-8 encoding of "FLOW-V0.0-transaction" padded with zeros to 32 bytes +const uint8_t TX_DOMAIN_TAG_TRANSACTION[DOMAIN_TAG_LENGTH] = { + 0x46, 0x4C, 0x4F, 0x57, 0x2D, 0x56, 0x30, 0x2E, 0x30, 0x2D, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6F, 0x6E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +// UTF-8 encoding of "FLOW-V0.0-user" padded with zeros to 32 bytes +const uint8_t TX_DOMAIN_TAG_MESSAGE[DOMAIN_TAG_LENGTH] = { + 0x46, 0x4C, 0x4F, 0x57, 0x2D, 0x56, 0x30, 0x2E, 0x30, 0x2D, 0x75, 0x73, 0x65, 0x72, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; diff --git a/src/common/actions.h b/src/common/actions.h index cca4813c..1ed7e8ec 100644 --- a/src/common/actions.h +++ b/src/common/actions.h @@ -25,15 +25,42 @@ #define GET_PUB_KEY_RESPONSE_LENGTH (3 * SECP256_PK_LEN) +extern const uint8_t TX_DOMAIN_TAG_TRANSACTION[DOMAIN_TAG_LENGTH]; +extern const uint8_t TX_DOMAIN_TAG_MESSAGE[DOMAIN_TAG_LENGTH]; + __Z_INLINE void app_sign() { - const uint8_t *message = get_signable(); - const uint16_t messageLength = get_signable_length(); + const uint8_t *message = tx_get_buffer(); + const uint16_t messageLength = tx_get_buffer_length(); + + uint16_t replyLen = 0; + zxerr_t err = crypto_sign(hdPath, + cryptoOptions, + message, + messageLength, + TX_DOMAIN_TAG_TRANSACTION, + G_io_apdu_buffer, + IO_APDU_BUFFER_SIZE - 3, + &replyLen); + + if (err != zxerr_ok || replyLen == 0) { + set_code(G_io_apdu_buffer, 0, APDU_CODE_SIGN_VERIFY_ERROR); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); + } else { + set_code(G_io_apdu_buffer, replyLen, APDU_CODE_OK); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, replyLen + 2); + } +} + +__Z_INLINE void app_sign_message() { + const uint8_t *message = tx_get_buffer(); + const uint16_t messageLength = tx_get_buffer_length(); uint16_t replyLen = 0; zxerr_t err = crypto_sign(hdPath, cryptoOptions, message, messageLength, + TX_DOMAIN_TAG_MESSAGE, G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, &replyLen); diff --git a/src/common/app_helper.c b/src/common/app_helper.c index 64bbed0c..fabf5b6f 100644 --- a/src/common/app_helper.c +++ b/src/common/app_helper.c @@ -28,8 +28,12 @@ #include "coin.h" #include "zxmacros.h" #include "hdpath.h" +#include "tx_metadata.h" void extractHDPathAndCryptoOptions(uint32_t rx, uint32_t offset) { + if (rx >= sizeof(G_io_apdu_buffer)) { + THROW(APDU_CODE_WRONG_LENGTH); + } if ((rx - offset) < sizeof(hdPath.data) + sizeof(cryptoOptions)) { THROW(APDU_CODE_WRONG_LENGTH); } @@ -47,10 +51,11 @@ void extractHDPathAndCryptoOptions(uint32_t rx, uint32_t offset) { MEMCPY(&cryptoOptions, G_io_apdu_buffer + offset + sizeof(hdPath.data), sizeof(cryptoOptions)); } -bool process_chunk(__Z_UNUSED volatile uint32_t *tx, uint32_t rx) { +process_chunk_response_t process_chunk(__Z_UNUSED volatile uint32_t *tx, uint32_t rx) { const uint8_t payloadType = G_io_apdu_buffer[OFFSET_PAYLOAD_TYPE]; + const uint8_t p2 = G_io_apdu_buffer[OFFSET_P2]; - if (G_io_apdu_buffer[OFFSET_P2] != 0) { + if (p2 != 0 && payloadType != 0x02) { THROW(APDU_CODE_INVALIDP1P2); } @@ -60,23 +65,54 @@ bool process_chunk(__Z_UNUSED volatile uint32_t *tx, uint32_t rx) { uint32_t added; switch (payloadType) { - case 0: + case 0x00: tx_initialize(); tx_reset(); extractHDPathAndCryptoOptions(rx, OFFSET_DATA); - return false; - case 1: + initStoredTxMetadata(); + return PROCESS_CHUNK_NOT_FINISHED; + case 0x01: added = tx_append(&(G_io_apdu_buffer[OFFSET_DATA]), rx - OFFSET_DATA); if (added != rx - OFFSET_DATA) { THROW(APDU_CODE_OUTPUT_BUFFER_TOO_SMALL); } - return false; - case 2: + return PROCESS_CHUNK_NOT_FINISHED; + case 0x02: + added = tx_append(&(G_io_apdu_buffer[OFFSET_DATA]), rx - OFFSET_DATA); + if (added != rx - OFFSET_DATA) { + THROW(APDU_CODE_OUTPUT_BUFFER_TOO_SMALL); + } + return PROCESS_CHUNK_FINISHED_NO_METADATA; + case 0x03: + if (storeTxMetadata(&(G_io_apdu_buffer[OFFSET_DATA]), rx - OFFSET_DATA) != PARSER_OK) { + initStoredTxMetadata(); // delete merkle tree proof on error for redundant security + ZEMU_TRACE(); + THROW(APDU_CODE_DATA_INVALID); + } + return PROCESS_CHUNK_NOT_FINISHED; + case 0x04: + if (validateStoredTxMetadataMerkleTreeLevel(&(G_io_apdu_buffer[OFFSET_DATA]), + rx - OFFSET_DATA) != PARSER_OK) { + initStoredTxMetadata(); // delete merkle tree proof on error for redundant security + ZEMU_TRACE(); + THROW(APDU_CODE_DATA_INVALID); + } + return PROCESS_CHUNK_NOT_FINISHED; + case 0x05: + if (validateStoredTxMetadataMerkleTreeLevel(&(G_io_apdu_buffer[OFFSET_DATA]), + rx - OFFSET_DATA) != PARSER_OK) { + initStoredTxMetadata(); // delete merkle tree proof on error for redundant security + ZEMU_TRACE(); + THROW(APDU_CODE_DATA_INVALID); + } + return PROCESS_CHUNK_FINISHED_WITH_METADATA; + case 0x10: + zemu_log("Message to sign.\n"); added = tx_append(&(G_io_apdu_buffer[OFFSET_DATA]), rx - OFFSET_DATA); if (added != rx - OFFSET_DATA) { THROW(APDU_CODE_OUTPUT_BUFFER_TOO_SMALL); } - return true; + return PROCESS_CHUNK_FINISHED_MESSAGE; } THROW(APDU_CODE_INVALIDP1P2); diff --git a/src/common/app_helper.h b/src/common/app_helper.h index caef6373..e071045e 100644 --- a/src/common/app_helper.h +++ b/src/common/app_helper.h @@ -41,7 +41,14 @@ void extractHDPathAndCryptoOptions(uint32_t rx, uint32_t offset); -bool process_chunk(volatile uint32_t *tx, uint32_t rx); +typedef enum { + PROCESS_CHUNK_NOT_FINISHED = 0, + PROCESS_CHUNK_FINISHED_WITH_METADATA, + PROCESS_CHUNK_FINISHED_NO_METADATA, + PROCESS_CHUNK_FINISHED_MESSAGE, +} process_chunk_response_t; + +process_chunk_response_t process_chunk(volatile uint32_t *tx, uint32_t rx); __Z_INLINE void handle_getversion(__Z_UNUSED volatile uint32_t *flags, volatile uint32_t *tx, diff --git a/src/common/tx.c b/src/common/tx.c index 7b72d4c7..57258c7c 100644 --- a/src/common/tx.c +++ b/src/common/tx.c @@ -20,6 +20,7 @@ #include "parser_tx.h" #include #include "zxmacros.h" +#include "app_mode.h" #if defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) #define RAM_BUFFER_SIZE 8192 @@ -51,15 +52,12 @@ const uint8_t TX_DOMAIN_TAG[DOMAIN_TAG_LENGTH] = { 0x63, 0x74, 0x69, 0x6F, 0x6E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -#define TX_BUFFER_OFFSET DOMAIN_TAG_LENGTH - void tx_initialize() { buffering_init(ram_buffer, sizeof(ram_buffer), (uint8_t *) N_appdata.buffer, FLASH_BUFFER_SIZE); } void tx_reset() { buffering_reset(); - buffering_append((uint8_t *) TX_DOMAIN_TAG, DOMAIN_TAG_LENGTH); } uint32_t tx_append(unsigned char *buffer, uint32_t length) { @@ -67,35 +65,52 @@ uint32_t tx_append(unsigned char *buffer, uint32_t length) { } uint32_t tx_get_buffer_length() { - if (buffering_get_buffer()->pos >= TX_BUFFER_OFFSET) { - return buffering_get_buffer()->pos - TX_BUFFER_OFFSET; - } - return 0; -} - -uint32_t get_signable_length() { return buffering_get_buffer()->pos; } uint8_t *tx_get_buffer() { - return buffering_get_buffer()->data + TX_BUFFER_OFFSET; -} - -uint8_t *get_signable() { return buffering_get_buffer()->data; } -const char *tx_parse() { +const char *tx_parse(process_chunk_response_t typeOfCall) { + // parse tx uint8_t err = parser_parse(&ctx_parsed_tx, tx_get_buffer(), tx_get_buffer_length()); if (err != PARSER_OK) { + ZEMU_TRACE(); return parser_getErrorDescription(err); } - err = parser_validate(&ctx_parsed_tx); + // parse metadata + parser_tx_obj.metadataInitialized = false; + switch (typeOfCall) { + case PROCESS_CHUNK_FINISHED_WITH_METADATA: + MEMZERO(&parser_tx_obj.metadata, sizeof(parser_tx_obj.metadata)); + err = parseTxMetadata(parser_tx_obj.hash.digest, &parser_tx_obj.metadata); + if (err != PARSER_OK) { + ZEMU_TRACE(); + return parser_getErrorDescription(err); + } + parser_tx_obj.metadataInitialized = true; + break; + case PROCESS_CHUNK_FINISHED_NO_METADATA: + if (!app_mode_expert()) { // we do not need metadata for these scripts, but this + // workflow should work only in expert mode + ZEMU_TRACE(); + return parser_getErrorDescription(PARSER_UNEXPECTED_SCRIPT); + } + break; + default: + ZEMU_TRACE(); + return parser_getErrorDescription(PARSER_UNEXPECTED_ERROR); + } + CHECK_APP_CANARY() + // validate + err = parser_validate(&ctx_parsed_tx); if (err != PARSER_OK) { + ZEMU_TRACE(); return parser_getErrorDescription(err); } diff --git a/src/common/tx.h b/src/common/tx.h index 4708a366..f3530bff 100644 --- a/src/common/tx.h +++ b/src/common/tx.h @@ -18,6 +18,7 @@ #include "os.h" #include "coin.h" #include "zxerror.h" +#include "app_helper.h" void tx_initialize(); @@ -50,7 +51,7 @@ uint8_t *get_signable(); /// Parse message stored in transaction buffer /// This function should be called as soon as full buffer data is loaded. /// \return It returns NULL if data is valid or error message otherwise. -const char *tx_parse(); +const char *tx_parse(process_chunk_response_t typeOfCall); /// Release zbuffer memory void tx_parse_reset(); diff --git a/src/crypto.c b/src/crypto.c index c6bbd9e3..94507337 100644 --- a/src/crypto.c +++ b/src/crypto.c @@ -20,9 +20,9 @@ #include "zxmacros.h" #include "zxformat.h" #include "zxerror.h" -#include "lib_standard_app/crypto_helpers.h" #if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#include "lib_standard_app/crypto_helpers.h" #include "cx.h" __Z_INLINE digest_type_e get_hash_type(const uint16_t options) { @@ -94,12 +94,19 @@ typedef struct { uint8_t der_signature[73]; } __attribute__((packed)) signature_t; -void sha256(const uint8_t *message, uint16_t messageLen, uint8_t message_digest[CX_SHA256_SIZE]) { - cx_hash_sha256(message, messageLen, message_digest, CX_SHA256_SIZE); +zxerr_t sha256(const uint8_t *message, + uint16_t messageLen, + uint8_t message_digest[CX_SHA256_SIZE]) { + size_t digest_len = cx_hash_sha256(message, messageLen, message_digest, CX_SHA256_SIZE); + if (digest_len != CX_SHA256_SIZE) { + return zxerr_invalid_crypto_settings; + } + return zxerr_ok; } zxerr_t digest_message(const uint8_t *message, uint16_t messageLen, + const uint8_t domainTag[DOMAIN_TAG_LENGTH], digest_type_e hash_kind, uint8_t *digest, uint16_t digestMax, @@ -113,22 +120,37 @@ zxerr_t digest_message(const uint8_t *message, zemu_log_stack("digest_message: zxerr_buffer_too_small"); return zxerr_buffer_too_small; } - sha256(message, messageLen, digest); - *digest_size = CX_SHA256_SIZE; + cx_sha256_t sha2; + cx_err = cx_sha256_init_no_throw(&sha2); + if (cx_err != CX_OK) return zxerr_invalid_crypto_settings; + cx_err = + cx_hash_no_throw((cx_hash_t *) &sha2, 0, domainTag, DOMAIN_TAG_LENGTH, NULL, 0); + if (cx_err != CX_OK) return zxerr_invalid_crypto_settings; + cx_err = cx_hash_no_throw((cx_hash_t *) &sha2, + CX_LAST, + message, + messageLen, + digest, + CX_SHA256_SIZE); + if (cx_err != CX_OK) return zxerr_invalid_crypto_settings; + *digest_size = cx_hash_get_size((cx_hash_t *) &sha2); + ; return zxerr_ok; } case HASH_SHA3_256: { - if (digestMax < 32) { + if (digestMax < CX_SHA3_256_SIZE) { return zxerr_buffer_too_small; } zemu_log_stack("sha3_256"); cx_sha3_t sha3; cx_err = cx_sha3_init_no_throw(&sha3, 256); if (cx_err != CX_OK) return zxerr_invalid_crypto_settings; + cx_err = + cx_hash_no_throw((cx_hash_t *) &sha3, 0, domainTag, DOMAIN_TAG_LENGTH, NULL, 0); + if (cx_err != CX_OK) return zxerr_invalid_crypto_settings; cx_err = cx_hash_no_throw((cx_hash_t *) &sha3, CX_LAST, message, messageLen, digest, 32); if (cx_err != CX_OK) return zxerr_invalid_crypto_settings; - zemu_log_stack("sha3_256 ready"); *digest_size = cx_hash_get_size((cx_hash_t *) &sha3); return zxerr_ok; } @@ -143,6 +165,7 @@ zxerr_t crypto_sign(const hd_path_t path, const uint16_t options, const uint8_t *message, uint16_t messageLen, + const uint8_t domainTag[DOMAIN_TAG_LENGTH], uint8_t *buffer, uint16_t bufferSize, uint16_t *sigSize) { @@ -162,12 +185,23 @@ zxerr_t crypto_sign(const hd_path_t path, CHECK_ZXERR(digest_message(message, messageLen, + domainTag, cx_hash_kind, messageDigest, sizeof(messageDigest), &messageDigestSize)); - if (messageDigestSize != 32) { + if (cx_hash_kind != HASH_SHA2_256 && cx_hash_kind != HASH_SHA3_256) { + zemu_log_stack("crypto_sign: zxerr_out_of_bounds"); + return zxerr_out_of_bounds; + } + + if (cx_hash_kind == HASH_SHA2_256 && messageDigestSize != CX_SHA256_SIZE) { + zemu_log_stack("crypto_sign: zxerr_out_of_bounds"); + return zxerr_out_of_bounds; + } + + if (cx_hash_kind == HASH_SHA3_256 && messageDigestSize != CX_SHA3_256_SIZE) { zemu_log_stack("crypto_sign: zxerr_out_of_bounds"); return zxerr_out_of_bounds; } diff --git a/src/crypto.h b/src/crypto.h index 8a1367ae..ea6842ae 100644 --- a/src/crypto.h +++ b/src/crypto.h @@ -30,12 +30,13 @@ typedef enum { HASH_UNKNOWN, HASH_SHA2_256, HASH_SHA3_256 } digest_type_e; typedef enum { CURVE_UNKNOWN, CURVE_SECP256K1, CURVE_SECP256R1 } curve_e; -#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) #else -#define CX_SHA256_SIZE 32 +#define CX_SHA256_SIZE 32 +#define CX_SHA3_256_SIZE 32 #endif -void sha256(const uint8_t *message, uint16_t messageLen, uint8_t message_digest[CX_SHA256_SIZE]); +zxerr_t sha256(const uint8_t *message, uint16_t messageLen, uint8_t message_digest[CX_SHA256_SIZE]); zxerr_t crypto_extractPublicKey(const hd_path_t path, const uint16_t options, @@ -46,6 +47,7 @@ zxerr_t crypto_sign(const hd_path_t path, const uint16_t options, const uint8_t *message, uint16_t messageLen, + const uint8_t domainTag[DOMAIN_TAG_LENGTH], uint8_t *signature, uint16_t signatureMaxlen, uint16_t *sigSize); diff --git a/src/json/json_parser.c b/src/json/json_parser.c index 1eb5dad3..17bddf68 100644 --- a/src/json/json_parser.c +++ b/src/json/json_parser.c @@ -70,7 +70,7 @@ parser_error_t array_get_element_count(const parsed_json_t *json, uint16_t array_token_index, uint16_t *number_elements) { *number_elements = 0; - if (array_token_index < 0 || array_token_index > json->numberOfTokens) { + if (array_token_index > json->numberOfTokens) { return PARSER_NO_DATA; } @@ -100,7 +100,7 @@ parser_error_t array_get_nth_element(const parsed_json_t *json, uint16_t array_token_index, uint16_t element_index, uint16_t *token_index) { - if (array_token_index < 0 || array_token_index > json->numberOfTokens) { + if (array_token_index > json->numberOfTokens) { return PARSER_NO_DATA; } @@ -135,7 +135,7 @@ parser_error_t object_get_element_count(const parsed_json_t *json, uint16_t object_token_index, uint16_t *element_count) { *element_count = 0; - if (object_token_index < 0 || object_token_index > json->numberOfTokens) { + if (object_token_index > json->numberOfTokens) { return PARSER_NO_DATA; } @@ -167,7 +167,7 @@ parser_error_t object_get_nth_key(const parsed_json_t *json, uint16_t object_element_index, uint16_t *token_index) { *token_index = object_token_index; - if (object_token_index < 0 || object_token_index > json->numberOfTokens) { + if (object_token_index > json->numberOfTokens) { return PARSER_NO_DATA; } @@ -202,7 +202,7 @@ parser_error_t object_get_nth_value(const parsed_json_t *json, uint16_t object_token_index, uint16_t object_element_index, uint16_t *key_index) { - if (object_token_index < 0 || object_token_index > json->numberOfTokens) { + if (object_token_index > json->numberOfTokens) { return PARSER_NO_DATA; } @@ -216,7 +216,7 @@ parser_error_t object_get_value(const parsed_json_t *json, uint16_t object_token_index, const char *key_name, uint16_t *token_index) { - if (object_token_index < 0 || object_token_index > json->numberOfTokens) { + if (object_token_index > json->numberOfTokens) { return PARSER_NO_DATA; } diff --git a/src/json/json_parser.h b/src/json/json_parser.h index 17486947..dbdfbeff 100644 --- a/src/json/json_parser.h +++ b/src/json/json_parser.h @@ -26,8 +26,6 @@ extern "C" { #endif -#include "bolos_target.h" - /// Max number of accepted tokens in the JSON input #define MAX_NUMBER_OF_TOKENS 256 diff --git a/src/message.c b/src/message.c new file mode 100644 index 00000000..f472c637 --- /dev/null +++ b/src/message.c @@ -0,0 +1,133 @@ +/******************************************************************************* + * (c) 2022 Vacuumlabs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ +#include "message.h" +#include "zxformat.h" +#include "app_mode.h" +#include "hdpath.h" +#include "crypto.h" +#include "buffering.h" + +#define MAX_MESSAGE_SHOW_LENGTH 34 * 5 +#define MAX_MESSAGE_LENGTH 0x7FFF + +struct { + uint8_t hash[CX_SHA256_SIZE]; + uint16_t length; + uint8_t *message; + bool canBeDisplayed; + +} messageData; + +zxerr_t message_parse() { + messageData.message = buffering_get_buffer()->data; + messageData.length = buffering_get_buffer()->pos; + + if (messageData.length > MAX_MESSAGE_LENGTH) { + return zxerr_out_of_bounds; + } + + for (size_t j = 0; j < messageData.length; j++) { + if (messageData.message[j] < 32 || messageData.message[j] > 127) { + return zxerr_out_of_bounds; + } + } + + CHECK_ZXERR(sha256(messageData.message, messageData.length, messageData.hash)); + messageData.canBeDisplayed = false; + + if (messageData.length <= MAX_MESSAGE_SHOW_LENGTH) { + messageData.canBeDisplayed = true; + } + + if (!messageData.canBeDisplayed && !app_mode_expert()) { + return zxerr_out_of_bounds; + } + + return zxerr_ok; +} + +zxerr_t message_getNumItems(uint8_t *num_items) { + *num_items = 2 + (!messageData.canBeDisplayed ? 1 : 0) + (app_mode_expert() ? 1 : 0); + return zxerr_ok; +} + +// retrieves a readable output for each field / page +zxerr_t message_getItem(int8_t displayIdx, + char *outKey, + uint16_t outKeyLen, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + switch (displayIdx) { + case 0: + snprintf(outKey, outKeyLen, "Review"); + snprintf(outVal, outValLen, "the message to sign"); + return zxerr_ok; + case 1: + if (messageData.canBeDisplayed) { + snprintf(outKey, outKeyLen, "Message"); + pageStringExt(outVal, + outValLen, + (char *) messageData.message, + messageData.length, + pageIdx, + pageCount); + return zxerr_ok; + } else { + if (!app_mode_expert()) { + return zxerr_unknown; + } + snprintf(outKey, outKeyLen, "Message too long,"); + snprintf(outVal, outValLen, "validate hash on a secure device."); + return zxerr_ok; + } + } + + displayIdx -= 2; + + if (displayIdx == 0 && !messageData.canBeDisplayed) { + if (!app_mode_expert()) { + return zxerr_unknown; + } + snprintf(outKey, outKeyLen, "Message hash"); + pageStringHex(outVal, + outValLen, + (const char *) messageData.hash, + sizeof(messageData.hash), + pageIdx, + pageCount); + return zxerr_ok; + } + + if (!messageData.canBeDisplayed) { + displayIdx -= 1; + } + + if (displayIdx == 0 && app_mode_expert()) { + snprintf(outKey, outKeyLen, "Your Path"); + char buffer[100]; + path_options_to_string(buffer, + sizeof(buffer), + hdPath.data, + HDPATH_LEN_DEFAULT, + cryptoOptions); + pageString(outVal, outValLen, buffer, pageIdx, pageCount); + return zxerr_ok; + } + + return zxerr_no_data; +} diff --git a/src/message.h b/src/message.h new file mode 100644 index 00000000..449e0af8 --- /dev/null +++ b/src/message.h @@ -0,0 +1,33 @@ +/******************************************************************************* + * (c) 2022 Vacuumlabs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ +#pragma once + +#include "zxerror.h" + +// Parses message from the buffer +zxerr_t message_parse(); + +/// Returns the number of items in the message view +zxerr_t message_getNumItems(uint8_t *num_items); + +/// Gets an specific item from the message view (including paging) +zxerr_t message_getItem(int8_t displayIdx, + char *outKey, + uint16_t outKeyLen, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); diff --git a/src/parser_common.h b/src/parser_common.h index 6d9f0b01..c2829454 100644 --- a/src/parser_common.h +++ b/src/parser_common.h @@ -22,11 +22,14 @@ extern "C" { #include #include -#define CHECK_PARSER_ERR(__CALL) \ - { \ - parser_error_t __err = __CALL; \ - CHECK_APP_CANARY() \ - if (__err != PARSER_OK) return __err; \ +#define CHECK_PARSER_ERR(__CALL) \ + { \ + parser_error_t __err = __CALL; \ + CHECK_APP_CANARY() \ + if (__err != PARSER_OK) { \ + ZEMU_TRACE(); \ + return __err; \ + } \ } #define CTX_CHECK_AND_ADVANCE(CTX, SIZE) \ @@ -78,6 +81,10 @@ typedef enum { // Required fields PARSER_REQUIRED_NONCE, PARSER_REQUIRED_METHOD, + // Metadata errors + PARSER_METADATA_ERROR, + PARSER_METADATA_TOO_MANY_HASHES, + PARSER_TOO_MANY_ARGUMENTS, } parser_error_t; typedef struct { diff --git a/src/parser_impl.c b/src/parser_impl.c index c09460ae..e08985ed 100644 --- a/src/parser_impl.c +++ b/src/parser_impl.c @@ -78,6 +78,18 @@ const char *parser_getErrorDescription(parser_error_t err) { return "parser_rlp_error_buffer_too_small"; case PARSER_RLP_ERROR_INVALID_PAGE: return "parser_rlp_error_invalid_page"; + case PARSER_JSON_INVALID: + return "parser_json_invalid"; + case PARSER_JSON_INVALID_TOKEN_IDX: + return "parser_json_invalid_token_idx"; + case PARSER_JSON_TOO_MANY_TOKENS: + return "parser_json_too_many_tokens"; + case PARSER_JSON_INCOMPLETE_JSON: + return "parser_json_incomplete_json"; + case PARSER_JSON_UNEXPECTED_ERROR: + return "parser_json_unex[ected_error"; + case PARSER_JSON_ZERO_TOKENS: + return "parser_json_zero_tokens"; case PARSER_UNEXPECTED_TX_VERSION: return "tx version is not supported"; case PARSER_UNEXPECTED_TYPE: @@ -112,6 +124,12 @@ const char *parser_getErrorDescription(parser_error_t err) { return "Required field nonce"; case PARSER_REQUIRED_METHOD: return "Required field method"; + case PARSER_METADATA_TOO_MANY_HASHES: + return "Metadata too many hashes"; + case PARSER_METADATA_ERROR: + return "Metadata unknown error"; + case PARSER_TOO_MANY_ARGUMENTS: + return "Too many arguments"; default: return "Unrecognized error code"; } @@ -127,7 +145,7 @@ __Z_INLINE char hexDigit(uint8_t v) { return '?'; } -parser_error_t json_validateToken(parsed_json_t *parsedJson, uint16_t tokenIdx) { +parser_error_t json_validateToken(const parsed_json_t *parsedJson, uint16_t tokenIdx) { if (!parsedJson->isValid) { return PARSER_JSON_INVALID; } @@ -150,7 +168,7 @@ parser_error_t json_validateToken(parsed_json_t *parsedJson, uint16_t tokenIdx) parser_error_t json_extractToken(char *outVal, uint16_t outValLen, - parsed_json_t *parsedJson, + const parsed_json_t *parsedJson, uint16_t tokenIdx) { MEMZERO(outVal, outValLen); CHECK_PARSER_ERR(json_validateToken(parsedJson, tokenIdx)) @@ -164,7 +182,9 @@ parser_error_t json_extractToken(char *outVal, return PARSER_OK; } -parser_error_t json_matchToken(parsed_json_t *parsedJson, uint16_t tokenIdx, char *expectedValue) { +parser_error_t json_matchToken(const parsed_json_t *parsedJson, + uint16_t tokenIdx, + const char *expectedValue) { CHECK_PARSER_ERR(json_validateToken(parsedJson, tokenIdx)) const jsmntok_t token = parsedJson->tokens[tokenIdx]; @@ -183,7 +203,7 @@ parser_error_t json_matchToken(parsed_json_t *parsedJson, uint16_t tokenIdx, cha return PARSER_OK; } -parser_error_t json_matchNull(parsed_json_t *parsedJson, uint16_t tokenIdx) { +parser_error_t json_matchNull(const parsed_json_t *parsedJson, uint16_t tokenIdx) { CHECK_PARSER_ERR(json_validateToken(parsedJson, tokenIdx)) const jsmntok_t token = parsedJson->tokens[tokenIdx]; @@ -202,119 +222,98 @@ parser_error_t json_matchNull(parsed_json_t *parsedJson, uint16_t tokenIdx) { return PARSER_OK; } -parser_error_t json_matchKeyValue(parsed_json_t *parsedJson, +parser_error_t json_matchKeyValue(const parsed_json_t *parsedJson, uint16_t tokenIdx, - char *expectedType, + const char *expectedType, jsmntype_t jsonType, uint16_t *valueTokenIdx) { CHECK_PARSER_ERR(json_validateToken(parsedJson, tokenIdx)) - - if (!(tokenIdx + 4 < parsedJson->numberOfTokens)) { - // we need this token and 4 more - return PARSER_JSON_INVALID_TOKEN_IDX; - } - if (parsedJson->tokens[tokenIdx].type != JSMN_OBJECT) { - return PARSER_UNEXPECTED_TYPE; + return PARSER_JSON_INVALID; } - if (parsedJson->tokens[tokenIdx].size != 2) { - return PARSER_UNEXPECTED_NUMBER_ITEMS; + uint16_t objectElements = 0; + CHECK_PARSER_ERR(object_get_element_count(parsedJson, tokenIdx, &objectElements)); + if (objectElements != 2) { + return PARSER_JSON_INVALID; } + uint16_t keyTokenIdx = 0; + CHECK_PARSER_ERR(object_get_value(parsedJson, tokenIdx, "type", &keyTokenIdx)); + CHECK_PARSER_ERR(object_get_value(parsedJson, tokenIdx, "value", valueTokenIdx)); + // Type key/value - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 1, (char *) "type")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 2, expectedType)) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 3, (char *) "value")) - if (parsedJson->tokens[tokenIdx + 4].type != jsonType) { - return PARSER_UNEXPECTED_NUMBER_ITEMS; + CHECK_PARSER_ERR(json_matchToken(parsedJson, keyTokenIdx, expectedType)) + if (parsedJson->tokens[*valueTokenIdx].type != jsonType) { + return PARSER_JSON_INVALID; } - - *valueTokenIdx = tokenIdx + 4; - return PARSER_OK; } // valueTokenIdx is JSON_MATCH_VALUE_IDX_NONE if the optional is null -parser_error_t json_matchOptionalKeyValue(parsed_json_t *parsedJson, +parser_error_t json_matchOptionalKeyValue(const parsed_json_t *parsedJson, uint16_t tokenIdx, - char *expectedType, + const char *expectedType, jsmntype_t jsonType, uint16_t *valueTokenIdx) { CHECK_PARSER_ERR(json_validateToken(parsedJson, tokenIdx)) - - if (!(tokenIdx + 4 < parsedJson->numberOfTokens)) { - // we need this token and 4 more. - return PARSER_JSON_INVALID_TOKEN_IDX; - } - if (parsedJson->tokens[tokenIdx].type != JSMN_OBJECT) { - return PARSER_UNEXPECTED_TYPE; + return PARSER_JSON_INVALID; } - if (parsedJson->tokens[tokenIdx].size != 2) { - return PARSER_UNEXPECTED_NUMBER_ITEMS; + uint16_t objectElements = 0; + CHECK_PARSER_ERR(object_get_element_count(parsedJson, tokenIdx, &objectElements)); + if (objectElements != 2) { + return PARSER_JSON_INVALID; } - // Type key/value - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 1, (char *) "type")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 2, (char *) "Optional")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 3, (char *) "value")) - if (parsedJson->tokens[tokenIdx + 4].type == JSMN_PRIMITIVE) { // optional null - CHECK_PARSER_ERR(json_matchNull(parsedJson, tokenIdx + 4)) + uint16_t innerKeyTokenIdx = 0; + uint16_t innerValueTokenIdx = 0; + CHECK_PARSER_ERR(object_get_value(parsedJson, tokenIdx, "type", &innerKeyTokenIdx)); + CHECK_PARSER_ERR(object_get_value(parsedJson, tokenIdx, "value", &innerValueTokenIdx)); + CHECK_PARSER_ERR(json_matchToken(parsedJson, innerKeyTokenIdx, (char *) "Optional")) + + if (parsedJson->tokens[innerValueTokenIdx].type == JSMN_PRIMITIVE) { // optional null + CHECK_PARSER_ERR(json_matchNull(parsedJson, innerValueTokenIdx)) *valueTokenIdx = JSON_MATCH_VALUE_IDX_NONE; return PARSER_OK; } - if (parsedJson->tokens[tokenIdx + 4].type == JSMN_OBJECT) { // optional not not null - return json_matchKeyValue(parsedJson, tokenIdx + 4, expectedType, jsonType, valueTokenIdx); + if (parsedJson->tokens[innerValueTokenIdx].type == JSMN_OBJECT) { // optional not null + return json_matchKeyValue(parsedJson, + innerValueTokenIdx, + expectedType, + jsonType, + valueTokenIdx); } - return PARSER_UNEXPECTED_VALUE; + return PARSER_JSON_INVALID; } -// valueTokenIdx is JSON_MATCH_VALUE_IDX_NONE if the optional is null -parser_error_t json_matchOptionalArray(parsed_json_t *parsedJson, - uint16_t tokenIdx, - uint16_t *valueTokenIdx) { +parser_error_t json_matchArbitraryKeyValue(const parsed_json_t *parsedJson, + uint16_t tokenIdx, + jsmntype_t *valueJsonType, + uint16_t *keyTokenIdx, + uint16_t *valueTokenIdx) { CHECK_PARSER_ERR(json_validateToken(parsedJson, tokenIdx)) - - if (!(tokenIdx + 4 < parsedJson->numberOfTokens)) { - // we need this token and 4 more - return PARSER_JSON_INVALID_TOKEN_IDX; - } - if (parsedJson->tokens[tokenIdx].type != JSMN_OBJECT) { - return PARSER_UNEXPECTED_TYPE; + return PARSER_JSON_INVALID; } - - if (parsedJson->tokens[tokenIdx].size != 2) { - return PARSER_UNEXPECTED_NUMBER_ITEMS; + uint16_t objectElements = 0; + CHECK_PARSER_ERR(object_get_element_count(parsedJson, tokenIdx, &objectElements)); + if (objectElements != 2) { + return PARSER_JSON_INVALID; } - // Type key/value - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 1, (char *) "type")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 2, (char *) "Optional")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 3, (char *) "value")) - if (parsedJson->tokens[tokenIdx + 4].type == JSMN_PRIMITIVE) { // optional null - CHECK_PARSER_ERR(json_matchNull(parsedJson, tokenIdx + 4)) - *valueTokenIdx = JSON_MATCH_VALUE_IDX_NONE; - return PARSER_OK; - } - if (parsedJson->tokens[tokenIdx + 4].type == JSMN_OBJECT) { // optional not null - if (!(tokenIdx + 8 < parsedJson->numberOfTokens)) { - return PARSER_JSON_INVALID_TOKEN_IDX; - } - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 5, (char *) "type")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 6, (char *) "Array")) - CHECK_PARSER_ERR(json_matchToken(parsedJson, tokenIdx + 7, (char *) "value")) - if (parsedJson->tokens[tokenIdx + 8].type == JSMN_ARRAY) { - *valueTokenIdx = tokenIdx + 8; - return PARSER_OK; - } + CHECK_PARSER_ERR(object_get_value(parsedJson, tokenIdx, "type", keyTokenIdx)); + CHECK_PARSER_ERR(object_get_value(parsedJson, tokenIdx, "value", valueTokenIdx)); + + if (parsedJson->tokens[*keyTokenIdx].type != JSMN_STRING) { + return PARSER_UNEXPECTED_TYPE; } + *valueJsonType = parsedJson->tokens[*valueTokenIdx].type; - return PARSER_UNEXPECTED_VALUE; + return PARSER_OK; } parser_error_t formatStrUInt8AsHex(const char *decStr, char *hexStr) { @@ -339,227 +338,20 @@ parser_error_t formatStrUInt8AsHex(const char *decStr, char *hexStr) { return PARSER_OK; } -parser_error_t json_extractString(char *outVal, - uint16_t outValLen, - parsed_json_t *parsedJson, - uint16_t tokenIdx) { - MEMZERO(outVal, outValLen); - - uint16_t internalTokenElemIdx; - CHECK_PARSER_ERR(json_matchKeyValue(parsedJson, - tokenIdx, - (char *) "String", - JSMN_STRING, - &internalTokenElemIdx)) - - CHECK_PARSER_ERR(json_extractToken(outVal, outValLen, parsedJson, internalTokenElemIdx)) - - return PARSER_OK; -} - -parser_error_t _matchScriptType(uint8_t scriptHash[32], script_type_e *scriptType) { - *scriptType = SCRIPT_UNKNOWN; - - char buffer[100]; - MEMZERO(buffer, sizeof(buffer)); - - // Check it is a known script digest - if (array_to_hexstr(buffer, sizeof(buffer), scriptHash, CX_SHA256_SIZE) != 64) { - return PARSER_UNEXPECTED_ERROR; - } - - struct known_script_entry { - script_type_e script_type; - const char *template; - }; - - const struct known_script_entry KNOWN_TYPES[] = { - {SCRIPT_TOKEN_TRANSFER, TEMPLATE_HASH_TOKEN_TRANSFER_EMULATOR}, - {SCRIPT_TOKEN_TRANSFER, TEMPLATE_HASH_TOKEN_TRANSFER_TESTNET}, - {SCRIPT_TOKEN_TRANSFER, TEMPLATE_HASH_TOKEN_TRANSFER_MAINNET}, - - {SCRIPT_CREATE_ACCOUNT, TEMPLATE_HASH_CREATE_ACCOUNT}, - - {SCRIPT_ADD_NEW_KEY, TEMPLATE_HASH_ADD_NEW_KEY}, - - {SCRIPT_TH01_WITHDRAW_UNLOCKED_TOKENS, TEMPLATE_HASH_TH01_WITHDRAW_UNLOCKED_TOKENS_TESTNET}, - {SCRIPT_TH01_WITHDRAW_UNLOCKED_TOKENS, TEMPLATE_HASH_TH01_WITHDRAW_UNLOCKED_TOKENS_MAINNET}, - - {SCRIPT_TH02_DEPOSIT_UNLOCKED_TOKENS, TEMPLATE_HASH_TH02_DEPOSIT_UNLOCKED_TOKENS_TESTNET}, - {SCRIPT_TH02_DEPOSIT_UNLOCKED_TOKENS, TEMPLATE_HASH_TH02_DEPOSIT_UNLOCKED_TOKENS_MAINNET}, - - {SCRIPT_TH06_REGISTER_NODE, TEMPLATE_HASH_TH06_REGISTER_NODE_TESTNET}, - {SCRIPT_TH06_REGISTER_NODE, TEMPLATE_HASH_TH06_REGISTER_NODE_MAINNET}, - - {SCRIPT_TH08_STAKE_NEW_TOKENS, TEMPLATE_HASH_TH08_STAKE_NEW_TOKENS_TESTNET}, - {SCRIPT_TH08_STAKE_NEW_TOKENS, TEMPLATE_HASH_TH08_STAKE_NEW_TOKENS_MAINNET}, - - {SCRIPT_TH09_RESTAKE_UNSTAKED_TOKENS, TEMPLATE_HASH_TH09_RESTAKE_UNSTAKED_TOKENS_TESTNET}, - {SCRIPT_TH09_RESTAKE_UNSTAKED_TOKENS, TEMPLATE_HASH_TH09_RESTAKE_UNSTAKED_TOKENS_MAINNET}, - - {SCRIPT_TH10_RESTAKE_REWARDED_TOKENS, TEMPLATE_HASH_TH10_RESTAKE_REWARDED_TOKENS_TESTNET}, - {SCRIPT_TH10_RESTAKE_REWARDED_TOKENS, TEMPLATE_HASH_TH10_RESTAKE_REWARDED_TOKENS_MAINNET}, - - {SCRIPT_TH11_UNSTAKE_TOKENS, TEMPLATE_HASH_TH11_UNSTAKE_TOKENS_TESTNET}, - {SCRIPT_TH11_UNSTAKE_TOKENS, TEMPLATE_HASH_TH11_UNSTAKE_TOKENS_MAINNET}, - - {SCRIPT_TH12_UNSTAKE_ALL_TOKENS, TEMPLATE_HASH_TH12_UNSTAKE_ALL_TOKENS_TESTNET}, - {SCRIPT_TH12_UNSTAKE_ALL_TOKENS, TEMPLATE_HASH_TH12_UNSTAKE_ALL_TOKENS_MAINNET}, - - {SCRIPT_TH13_WITHDRAW_UNSTAKED_TOKENS, TEMPLATE_HASH_TH13_WITHDRAW_UNSTAKED_TOKENS_TESTNET}, - {SCRIPT_TH13_WITHDRAW_UNSTAKED_TOKENS, TEMPLATE_HASH_TH13_WITHDRAW_UNSTAKED_TOKENS_MAINNET}, - - {SCRIPT_TH14_WITHDRAW_REWARDED_TOKENS, TEMPLATE_HASH_TH14_WITHDRAW_REWARDED_TOKENS_TESTNET}, - {SCRIPT_TH14_WITHDRAW_REWARDED_TOKENS, TEMPLATE_HASH_TH14_WITHDRAW_REWARDED_TOKENS_MAINNET}, - - {SCRIPT_TH16_REGISTER_OPERATOR_NODE, TEMPLATE_HASH_TH16_REGISTER_OPERATOR_NODE_TESTNET}, - {SCRIPT_TH16_REGISTER_OPERATOR_NODE, TEMPLATE_HASH_TH16_REGISTER_OPERATOR_NODE_MAINNET}, - - {SCRIPT_TH17_REGISTER_DELEGATOR, TEMPLATE_HASH_TH17_REGISTER_DELEGATOR_TESTNET}, - {SCRIPT_TH17_REGISTER_DELEGATOR, TEMPLATE_HASH_TH17_REGISTER_DELEGATOR_MAINNET}, - - {SCRIPT_TH19_DELEGATE_NEW_TOKENS, TEMPLATE_HASH_TH19_DELEGATE_NEW_TOKENS_TESTNET}, - {SCRIPT_TH19_DELEGATE_NEW_TOKENS, TEMPLATE_HASH_TH19_DELEGATE_NEW_TOKENS_MAINNET}, - - {SCRIPT_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS_TESTNET}, - {SCRIPT_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS_MAINNET}, - - {SCRIPT_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS_TESTNET}, - {SCRIPT_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS_MAINNET}, - - {SCRIPT_TH22_UNSTAKE_DELEGATED_TOKENS, TEMPLATE_HASH_TH22_UNSTAKE_DELEGATED_TOKENS_TESTNET}, - {SCRIPT_TH22_UNSTAKE_DELEGATED_TOKENS, TEMPLATE_HASH_TH22_UNSTAKE_DELEGATED_TOKENS_MAINNET}, - - {SCRIPT_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS_TESTNET}, - {SCRIPT_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS_MAINNET}, - - {SCRIPT_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS_TESTNET}, - {SCRIPT_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS, - TEMPLATE_HASH_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS_MAINNET}, - - {SCRIPT_TH25_UPDATE_NETWORKING_ADDRESS, - TEMPLATE_HASH_TH25_UPDATE_NETWORKING_ADDRESS_TESTNET}, - {SCRIPT_TH25_UPDATE_NETWORKING_ADDRESS, - TEMPLATE_HASH_TH25_UPDATE_NETWORKING_ADDRESS_MAINNET}, - - {SCRIPT_SCO01_SETUP_STAKING_COLLECTION, - TEMPLATE_HASH_SCO01_SETUP_STAKING_COLLECTION_TESTNET}, - {SCRIPT_SCO01_SETUP_STAKING_COLLECTION, - TEMPLATE_HASH_SCO01_SETUP_STAKING_COLLECTION_MAINNET}, - - {SCRIPT_SCO02_REGISTER_DELEGATOR, TEMPLATE_HASH_SCO02_REGISTER_DELEGATOR_TESTNET}, - {SCRIPT_SCO02_REGISTER_DELEGATOR, TEMPLATE_HASH_SCO02_REGISTER_DELEGATOR_MAINNET}, - - {SCRIPT_SCO03_REGISTER_NODE, TEMPLATE_HASH_SCO0301_REGISTER_NODE_TESTNET}, - {SCRIPT_SCO03_REGISTER_NODE, TEMPLATE_HASH_SCO0301_REGISTER_NODE_MAINNET}, - - {SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT, TEMPLATE_HASH_SCO0401_CREATE_MACHINE_ACCOUNT_TESTNET}, - {SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT, TEMPLATE_HASH_SCO0401_CREATE_MACHINE_ACCOUNT_MAINNET}, - - {SCRIPT_SCO05_REQUEST_UNSTAKING, TEMPLATE_HASH_SCO05_REQUEST_UNSTAKING_TESTNET}, - {SCRIPT_SCO05_REQUEST_UNSTAKING, TEMPLATE_HASH_SCO05_REQUEST_UNSTAKING_MAINNET}, - - {SCRIPT_SCO06_STAKE_NEW_TOKENS, TEMPLATE_HASH_SCO06_STAKE_NEW_TOKENS_TESTNET}, - {SCRIPT_SCO06_STAKE_NEW_TOKENS, TEMPLATE_HASH_SCO06_STAKE_NEW_TOKENS_MAINNET}, - - {SCRIPT_SCO07_STAKE_REWARD_TOKENS, TEMPLATE_HASH_SCO07_STAKE_REWARD_TOKENS_TESTNET}, - {SCRIPT_SCO07_STAKE_REWARD_TOKENS, TEMPLATE_HASH_SCO07_STAKE_REWARD_TOKENS_MAINNET}, - - {SCRIPT_SCO08_STAKE_UNSTAKED_TOKENS, TEMPLATE_HASH_SCO08_STAKE_UNSTAKED_TOKENS_TESTNET}, - {SCRIPT_SCO08_STAKE_UNSTAKED_TOKENS, TEMPLATE_HASH_SCO08_STAKE_UNSTAKED_TOKENS_MAINNET}, - - {SCRIPT_SCO09_UNSTAKE_ALL, TEMPLATE_HASH_SCO09_UNSTAKE_ALL_TESTNET}, - {SCRIPT_SCO09_UNSTAKE_ALL, TEMPLATE_HASH_SCO09_UNSTAKE_ALL_MAINNET}, - - {SCRIPT_SCO10_WITHDRAW_REWARD_TOKENS, TEMPLATE_HASH_SCO10_WITHDRAW_REWARD_TOKENS_TESTNET}, - {SCRIPT_SCO10_WITHDRAW_REWARD_TOKENS, TEMPLATE_HASH_SCO10_WITHDRAW_REWARD_TOKENS_MAINNET}, - - {SCRIPT_SCO11_WITHDRAW_UNSTAKED_TOKENS, - TEMPLATE_HASH_SCO11_WITHDRAW_UNSTAKED_TOKENS_TESTNET}, - {SCRIPT_SCO11_WITHDRAW_UNSTAKED_TOKENS, - TEMPLATE_HASH_SCO11_WITHDRAW_UNSTAKED_TOKENS_MAINNET}, - - {SCRIPT_SCO12_CLOSE_STAKE, TEMPLATE_HASH_SCO12_CLOSE_STAKE_TESTNET}, - {SCRIPT_SCO12_CLOSE_STAKE, TEMPLATE_HASH_SCO12_CLOSE_STAKE_MAINNET}, - - {SCRIPT_SCO13_TRANSFER_NODE, TEMPLATE_HASH_SCO13_TRANSFER_NODE_TESTNET}, - {SCRIPT_SCO13_TRANSFER_NODE, TEMPLATE_HASH_SCO13_TRANSFER_NODE_MAINNET}, - - {SCRIPT_SCO14_TRANSFER_DELEGATOR, TEMPLATE_HASH_SCO14_TRANSFER_DELEGATOR_TESTNET}, - {SCRIPT_SCO14_TRANSFER_DELEGATOR, TEMPLATE_HASH_SCO14_TRANSFER_DELEGATOR_MAINNET}, - - {SCRIPT_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT, - TEMPLATE_HASH_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT_TESTNET}, - {SCRIPT_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT, - TEMPLATE_HASH_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT_MAINNET}, - - {SCRIPT_SCO16_UPDATE_NETWORKING_ADDRESS, - TEMPLATE_HASH_SCO16_UPDATE_NETWORKING_ADDRESS_TESTNET}, - {SCRIPT_SCO16_UPDATE_NETWORKING_ADDRESS, - TEMPLATE_HASH_SCO16_UPDATE_NETWORKING_ADDRESS_MAINNET}, - - {SCRIPT_FUSD01_SETUP_FUSD_VAULT, TEMPLATE_HASH_FUSD01_SETUP_FUSD_VAULT_TESTNET}, - {SCRIPT_FUSD01_SETUP_FUSD_VAULT, TEMPLATE_HASH_FUSD01_SETUP_FUSD_VAULT_MAINNET}, - - {SCRIPT_FUSD02_TRANSFER_FUSD, TEMPLATE_HASH_FUSD02_TRANSFER_FUSD_TESTNET}, - {SCRIPT_FUSD02_TRANSFER_FUSD, TEMPLATE_HASH_FUSD02_TRANSFER_FUSD_MAINNET}, - - {SCRIPT_TS01_SET_UP_TOPSHOT_COLLECTION, - TEMPLATE_HASH_TS01_SET_UP_TOPSHOT_COLLECTION_TESTNET}, - {SCRIPT_TS01_SET_UP_TOPSHOT_COLLECTION, - TEMPLATE_HASH_TS01_SET_UP_TOPSHOT_COLLECTION_MAINNET}, - - {SCRIPT_TS02_TRANSFER_TOP_SHOT_MOMENT, TEMPLATE_HASH_TS02_TRANSFER_TOP_SHOT_MOMENT_TESTNET}, - {SCRIPT_TS02_TRANSFER_TOP_SHOT_MOMENT, TEMPLATE_HASH_TS02_TRANSFER_TOP_SHOT_MOMENT_MAINNET}, - - {SCRIPT_USDC01_SETUP_USDC_VAULT, TEMPLATE_HASH_USDC01_SETUP_USDC_VAULT_TESTNET}, - {SCRIPT_USDC01_SETUP_USDC_VAULT, TEMPLATE_HASH_USDC01_SETUP_USDC_VAULT_MAINNET}, - - {SCRIPT_USDC02_TRANSFER_USDC, TEMPLATE_HASH_USDC02_TRANSFER_USDC_TESTNET}, - {SCRIPT_USDC02_TRANSFER_USDC, TEMPLATE_HASH_USDC02_TRANSFER_USDC_MAINNET}, - - {SCRIPT_SCO03_REGISTER_NODE, TEMPLATE_HASH_SCO0302_REGISTER_NODE_TESTNET}, - {SCRIPT_SCO03_REGISTER_NODE, TEMPLATE_HASH_SCO0302_REGISTER_NODE_MAINNET}, - - {SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT, TEMPLATE_HASH_SCO0402_CREATE_MACHINE_ACCOUNT_TESTNET}, - {SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT, TEMPLATE_HASH_SCO0402_CREATE_MACHINE_ACCOUNT_MAINNET}, - - // sentinel, do not remove - {0, NULL}}; - - int i = 0; - while (KNOWN_TYPES[i].template) { - if (MEMCMP((char *) (PIC(KNOWN_TYPES[i].template)), buffer, 64) == 0) { - *scriptType = KNOWN_TYPES[i].script_type; - return PARSER_OK; - } - i++; - } - - return PARSER_UNEXPECTED_SCRIPT; -} - -parser_error_t _readScript(parser_context_t *c, flow_script_t *v) { +parser_error_t _readScript(parser_context_t *c, flow_script_hash_t *s) { rlp_kind_e kind; + parser_context_t script; uint32_t bytesConsumed; - MEMZERO(v, sizeof(flow_script_t)); - - CHECK_PARSER_ERR(rlp_decode(c, &v->ctx, &kind, &bytesConsumed)); + CHECK_PARSER_ERR(rlp_decode(c, &script, &kind, &bytesConsumed)); CTX_CHECK_AND_ADVANCE(c, bytesConsumed) CHECK_KIND(kind, RLP_KIND_STRING) - MEMZERO(v->digest, sizeof(v->digest)); - sha256(v->ctx.buffer, v->ctx.bufferLen, v->digest); - - CHECK_PARSER_ERR(_matchScriptType(v->digest, &v->type)) + MEMZERO(s->digest, sizeof(s->digest)); + zxerr_t err = sha256(script.buffer, script.bufferLen, s->digest); + if (err != zxerr_ok) { + return PARSER_UNEXPECTED_ERROR; + } return PARSER_OK; } @@ -576,16 +368,16 @@ parser_error_t _readArguments(parser_context_t *c, flow_argument_list_t *v) { CHECK_KIND(kind, RLP_KIND_LIST) v->argCount = 0; - while (v->ctx.offset < v->ctx.bufferLen && v->argCount < PARSER_MAX_ARGCOUNT) { + while (v->ctx.offset < v->ctx.bufferLen) { + if (v->argCount >= PARSER_MAX_ARGCOUNT) { + return PARSER_UNEXPECTED_NUMBER_ITEMS; + } CHECK_PARSER_ERR(rlp_decode(&v->ctx, &v->argCtx[v->argCount], &kind, &bytesConsumed)) CTX_CHECK_AND_ADVANCE(&v->ctx, bytesConsumed) CHECK_KIND(kind, RLP_KIND_STRING) v->argCount++; } v->ctx.offset = 0; - if (v->argCount >= PARSER_MAX_ARGCOUNT) { - return PARSER_UNEXPECTED_NUMBER_ITEMS; - } return PARSER_OK; } @@ -735,7 +527,7 @@ parser_error_t _read(parser_context_t *c, parser_tx_t *v) { CHECK_KIND(kind, RLP_KIND_LIST) // Go through the inner list - CHECK_PARSER_ERR(_readScript(&ctx_rootInnerList, &v->script)) + CHECK_PARSER_ERR(_readScript(&ctx_rootInnerList, &v->hash)) CHECK_PARSER_ERR(_readArguments(&ctx_rootInnerList, &v->arguments)) CHECK_PARSER_ERR(_readReferenceBlockId(&ctx_rootInnerList, &v->referenceBlockId)) CHECK_PARSER_ERR(_readGasLimit(&ctx_rootInnerList, &v->gasLimit)) @@ -751,9 +543,6 @@ parser_error_t _read(parser_context_t *c, parser_tx_t *v) { return PARSER_UNEXPECTED_BUFFER_END; } - // Check last item? signers? - // TODO: Do we want to show signers too? - // TODO: confirm that things are not completed return PARSER_OK; } @@ -764,6 +553,7 @@ parser_error_t _validateTx(__Z_UNUSED const parser_context_t *c, __Z_UNUSED cons parser_error_t _countArgumentItems(const flow_argument_list_t *v, uint8_t argumentIndex, + uint8_t min_number_of_items, uint8_t max_number_of_items, uint8_t *number_of_items) { *number_of_items = 0; @@ -783,7 +573,7 @@ parser_error_t _countArgumentItems(const flow_argument_list_t *v, uint16_t arrayTokenCount; CHECK_PARSER_ERR( array_get_element_count(&parsedJson, internalTokenElementIdx, &arrayTokenCount)); - if (arrayTokenCount > max_number_of_items) { + if (arrayTokenCount < min_number_of_items || arrayTokenCount > max_number_of_items) { return PARSER_UNEXPECTED_NUMBER_ITEMS; } @@ -791,204 +581,12 @@ parser_error_t _countArgumentItems(const flow_argument_list_t *v, return PARSER_OK; } -// if Optional is null, number_of_items is set to 1 as one screen is needed to display "None" -parser_error_t _countArgumentOptionalItems(const flow_argument_list_t *v, - uint8_t argumentIndex, - uint8_t max_number_of_items, - uint8_t *number_of_items) { - *number_of_items = 0; - parsed_json_t parsedJson = {false}; - - if (argumentIndex >= v->argCount) { - return PARSER_UNEXPECTED_FIELD; - } - - const parser_context_t argCtx = v->argCtx[argumentIndex]; - CHECK_PARSER_ERR(json_parse(&parsedJson, (char *) argCtx.buffer, argCtx.bufferLen)); - - uint16_t internalTokenElementIdx; - CHECK_PARSER_ERR(json_matchOptionalArray(&parsedJson, 0, &internalTokenElementIdx)); - if (internalTokenElementIdx == JSON_MATCH_VALUE_IDX_NONE) { - *number_of_items = 1; - return PARSER_OK; - } - - // Get number of items - uint16_t arrayTokenCount; - CHECK_PARSER_ERR( - array_get_element_count(&parsedJson, internalTokenElementIdx, &arrayTokenCount)); - if (arrayTokenCount > max_number_of_items) { - return PARSER_UNEXPECTED_NUMBER_ITEMS; - } - - *number_of_items = arrayTokenCount; - return PARSER_OK; -} - -parser_error_t _getNumItems(__Z_UNUSED const parser_context_t *c, - const parser_tx_t *v, - uint8_t *numItems) { - uint8_t argArrayLength = 0; - - uint8_t show_address_yes = - (show_address == SHOW_ADDRESS_YES || show_address == SHOW_ADDRESS_YES_HASH_MISMATCH); - uint8_t extraItems = v->authorizers.authorizer_count; - extraItems += (show_address_yes && !addressUsedInTx) ? 1 : 0; - extraItems += (show_address == SHOW_ADDRESS_YES_HASH_MISMATCH) ? 1 : 0; - extraItems += show_address_yes ? 0 : 1; - extraItems += app_mode_expert() ? 1 : 0; - - switch (v->script.type) { - case SCRIPT_TOKEN_TRANSFER: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_CREATE_ACCOUNT: - // array length is checked while we are parsing it - CHECK_PARSER_ERR(_countArgumentItems(&v->arguments, 0, UINT8_MAX, &argArrayLength)) - *numItems = 8 + argArrayLength + extraItems; - return PARSER_OK; - case SCRIPT_ADD_NEW_KEY: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH01_WITHDRAW_UNLOCKED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH02_DEPOSIT_UNLOCKED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH06_REGISTER_NODE: - *numItems = 14 + extraItems; - return PARSER_OK; - case SCRIPT_TH08_STAKE_NEW_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH09_RESTAKE_UNSTAKED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH10_RESTAKE_REWARDED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH11_UNSTAKE_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH12_UNSTAKE_ALL_TOKENS: - *numItems = 8 + extraItems; - return PARSER_OK; - case SCRIPT_TH13_WITHDRAW_UNSTAKED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH14_WITHDRAW_REWARDED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH16_REGISTER_OPERATOR_NODE: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_TH17_REGISTER_DELEGATOR: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_TH19_DELEGATE_NEW_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH22_UNSTAKE_DELEGATED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_TH25_UPDATE_NETWORKING_ADDRESS: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_SCO01_SETUP_STAKING_COLLECTION: - *numItems = 8 + extraItems; - return PARSER_OK; - case SCRIPT_SCO02_REGISTER_DELEGATOR: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_SCO03_REGISTER_NODE: - // array length is checked while we are parsing it - CHECK_PARSER_ERR( - _countArgumentOptionalItems(&v->arguments, 6, UINT8_MAX, &argArrayLength)); - *numItems = 14 + argArrayLength + extraItems; - return PARSER_OK; - case SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT: - // array length is checked while we are parsing it - CHECK_PARSER_ERR(_countArgumentItems(&v->arguments, 1, UINT8_MAX, &argArrayLength)) - *numItems = 9 + argArrayLength + extraItems; - return PARSER_OK; - case SCRIPT_SCO05_REQUEST_UNSTAKING: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO06_STAKE_NEW_TOKENS: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO07_STAKE_REWARD_TOKENS: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO08_STAKE_UNSTAKED_TOKENS: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO09_UNSTAKE_ALL: - *numItems = 9 + extraItems; - return PARSER_OK; - case SCRIPT_SCO10_WITHDRAW_REWARD_TOKENS: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO11_WITHDRAW_UNSTAKED_TOKENS: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO12_CLOSE_STAKE: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_SCO13_TRANSFER_NODE: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_SCO14_TRANSFER_DELEGATOR: - *numItems = 11 + extraItems; - return PARSER_OK; - case SCRIPT_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_SCO16_UPDATE_NETWORKING_ADDRESS: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_FUSD01_SETUP_FUSD_VAULT: - *numItems = 8 + extraItems; - return PARSER_OK; - case SCRIPT_FUSD02_TRANSFER_FUSD: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_TS01_SET_UP_TOPSHOT_COLLECTION: - *numItems = 8 + extraItems; - return PARSER_OK; - case SCRIPT_TS02_TRANSFER_TOP_SHOT_MOMENT: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_USDC01_SETUP_USDC_VAULT: - *numItems = 8 + extraItems; - return PARSER_OK; - case SCRIPT_USDC02_TRANSFER_USDC: - *numItems = 10 + extraItems; - return PARSER_OK; - case SCRIPT_UNKNOWN: - default: - return PARSER_UNEXPECTED_SCRIPT; - } -} - void checkAddressUsedInTx() { addressUsedInTx = 0; - int authCount = parser_tx_obj.authorizers.authorizer_count; - for (int i = 0; i < authCount + 2; i++) { //+2 for proposer and payer - parser_context_t *ctx = &parser_tx_obj.payer.ctx; + uint16_t authCount = parser_tx_obj.authorizers.authorizer_count; + for (uint16_t i = 0; i < (uint16_t)(authCount + 2); i++) { //+2 for proposer and payer + parser_context_t *ctx = NULL; + if (i > authCount) ctx = &parser_tx_obj.payer.ctx; if (i == authCount) ctx = &parser_tx_obj.proposalKeyAddress.ctx; if (i < authCount) ctx = &parser_tx_obj.authorizers.authorizer[i].ctx; @@ -1001,3 +599,9 @@ void checkAddressUsedInTx() { } } } + +parser_error_t parseMetadata() { + MEMZERO(&parser_tx_obj.metadata, sizeof(parser_tx_obj.metadata)); + CHECK_PARSER_ERR(parseTxMetadata(parser_tx_obj.hash.digest, &parser_tx_obj.metadata)); + return PARSER_OK; +} diff --git a/src/parser_impl.h b/src/parser_impl.h index e17f3805..b714464e 100644 --- a/src/parser_impl.h +++ b/src/parser_impl.h @@ -29,64 +29,56 @@ extern parser_tx_t parser_tx_obj; parser_error_t parser_init(parser_context_t *ctx, const uint8_t *buffer, uint16_t bufferSize); -parser_error_t _matchScriptType(uint8_t scriptHash[32], script_type_e *scriptType); - parser_error_t _read(parser_context_t *c, parser_tx_t *v); parser_error_t _validateTx(const parser_context_t *c, const parser_tx_t *v); -parser_error_t _getNumItems(const parser_context_t *c, const parser_tx_t *v, uint8_t *numItems); - // Called when argumentIndex-th argument is an array. If the array length is more than // max_number_of_items returns parser error, otherwise it sets number_of_items as the array length. parser_error_t _countArgumentItems(const flow_argument_list_t *v, uint8_t argumentIndex, + uint8_t min_number_of_items, uint8_t max_number_of_items, uint8_t *number_of_items); -// Same as _countArgumentItems, but the array is optional. -parser_error_t _countArgumentOptionalItems(const flow_argument_list_t *v, - uint8_t argumentIndex, - uint8_t max_number_of_items, - uint8_t *number_of_items); - -parser_error_t json_validateToken(parsed_json_t *parsedJson, uint16_t tokenIdx); +parser_error_t json_validateToken(const parsed_json_t *parsedJson, uint16_t tokenIdx); parser_error_t json_extractToken(char *outVal, uint16_t outValLen, - parsed_json_t *parsedJson, + const parsed_json_t *parsedJson, uint16_t tokenIdx); -parser_error_t json_matchToken(parsed_json_t *parsedJson, uint16_t tokenIdx, char *expectedValue); +parser_error_t json_matchToken(const parsed_json_t *parsedJson, + uint16_t tokenIdx, + const char *expectedValue); -parser_error_t json_matchNull(parsed_json_t *parsedJson, uint16_t tokenIdx); +parser_error_t json_matchNull(const parsed_json_t *parsedJson, uint16_t tokenIdx); -parser_error_t json_matchKeyValue(parsed_json_t *parsedJson, +parser_error_t json_matchKeyValue(const parsed_json_t *parsedJson, uint16_t tokenIdx, - char *expectedType, + const char *expectedType, jsmntype_t jsonType, uint16_t *valueTokenIdx); #define JSON_MATCH_VALUE_IDX_NONE 65535 -parser_error_t json_matchOptionalKeyValue(parsed_json_t *parsedJson, +parser_error_t json_matchOptionalKeyValue(const parsed_json_t *parsedJson, uint16_t tokenIdx, - char *expectedType, + const char *expectedType, jsmntype_t jsonType, uint16_t *valueTokenIdx); -parser_error_t json_matchOptionalArray(parsed_json_t *parsedJson, - uint16_t tokenIdx, - uint16_t *valueTokenIdx); +parser_error_t json_matchArbitraryKeyValue(const parsed_json_t *parsedJson, + uint16_t tokenIdx, + jsmntype_t *valueJsonType, + uint16_t *keyTokenIdx, + uint16_t *valueTokenIdx); parser_error_t formatStrUInt8AsHex(const char *decStr, char *hexStr); -parser_error_t json_extractString(char *outVal, - uint16_t outValLen, - parsed_json_t *parsedJson, - uint16_t tokenIdx); - void checkAddressUsedInTx(); +parser_error_t parseMetadata(); + #ifdef __cplusplus } #endif diff --git a/src/parser_tx.c b/src/parser_tx.c index 69e6604a..03444c14 100644 --- a/src/parser_tx.c +++ b/src/parser_tx.c @@ -65,11 +65,6 @@ parser_error_t parser_validate(const parser_context_t *ctx) { return PARSER_OK; } -parser_error_t parser_getNumItems(const parser_context_t *ctx, uint8_t *num_items) { - CHECK_PARSER_ERR(_getNumItems(ctx, &parser_tx_obj, num_items)) - return PARSER_OK; -} - // based on Dapper provided code at // https://github.com/onflow/flow-go-sdk/blob/96796f0cabc1847d7879a5230ab55fd3cdd41ae8/address.go#L286 @@ -169,7 +164,7 @@ parser_error_t parser_printArgument(const flow_argument_list_t *v, jsmntype_t jsonType, char *outVal, uint16_t outValLen, - __Z_UNUSED uint8_t pageIdx, + uint8_t pageIdx, uint8_t *pageCount) { MEMZERO(outVal, outValLen); @@ -177,28 +172,34 @@ parser_error_t parser_printArgument(const flow_argument_list_t *v, return PARSER_UNEXPECTED_NUMBER_ITEMS; } - *pageCount = 1; - parsed_json_t parsedJson = {false}; CHECK_PARSER_ERR(json_parse(&parsedJson, (char *) v->argCtx[argIndex].buffer, v->argCtx[argIndex].bufferLen)); + + char bufferUI[ARGUMENT_BUFFER_SIZE_STRING]; uint16_t valueTokenIndex; - CHECK_PARSER_ERR( - json_matchKeyValue(&parsedJson, 0, (char *) expectedType, jsonType, &valueTokenIndex)) - CHECK_PARSER_ERR(json_extractToken(outVal, outValLen, &parsedJson, valueTokenIndex)) + + CHECK_PARSER_ERR(json_matchKeyValue(&parsedJson, 0, expectedType, jsonType, &valueTokenIndex)) + CHECK_PARSER_ERR(json_extractToken(bufferUI, sizeof(bufferUI), &parsedJson, valueTokenIndex)) + pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); + + // Check requested page is in range + if (pageIdx > *pageCount) { + return PARSER_DISPLAY_PAGE_OUT_OF_RANGE; + } return PARSER_OK; } -parser_error_t parser_printArgumentOptionalDelegatorID(const flow_argument_list_t *v, - uint8_t argIndex, - const char *expectedType, - jsmntype_t jsonType, - char *outVal, - uint16_t outValLen, - __Z_UNUSED uint8_t pageIdx, - uint8_t *pageCount) { +parser_error_t parser_printOptionalArgument(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { MEMZERO(outVal, outValLen); if (argIndex >= v->argCount) { @@ -212,35 +213,63 @@ parser_error_t parser_printArgumentOptionalDelegatorID(const flow_argument_list_ (char *) v->argCtx[argIndex].buffer, v->argCtx[argIndex].bufferLen)); uint16_t valueTokenIndex; - CHECK_PARSER_ERR(json_matchOptionalKeyValue(&parsedJson, - 0, - (char *) expectedType, - jsonType, - &valueTokenIndex)) + CHECK_PARSER_ERR( + json_matchOptionalKeyValue(&parsedJson, 0, expectedType, jsonType, &valueTokenIndex)) if (valueTokenIndex == JSON_MATCH_VALUE_IDX_NONE) { - if (outValLen < 5) { - return PARSER_UNEXPECTED_BUFFER_END; - } - strncpy_s(outVal, "None", 5); + snprintf(outVal, outValLen, "None"); } else { - CHECK_PARSER_ERR(json_extractToken(outVal, outValLen, &parsedJson, valueTokenIndex)) + char bufferUI[ARGUMENT_BUFFER_SIZE_STRING]; + CHECK_PARSER_ERR( + json_extractToken(bufferUI, sizeof(bufferUI), &parsedJson, valueTokenIndex)) + pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); } return PARSER_OK; } -parser_error_t parser_printArgumentString(const parser_context_t *argumentCtx, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { +parser_error_t parser_printArgumentArray(const flow_argument_list_t *v, + uint8_t argIndex, + uint8_t arrayIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { MEMZERO(outVal, outValLen); + if (argIndex >= v->argCount) { + return PARSER_UNEXPECTED_NUMBER_ITEMS; + } + parsed_json_t parsedJson = {false}; - CHECK_PARSER_ERR(json_parse(&parsedJson, (char *) argumentCtx->buffer, argumentCtx->bufferLen)); + CHECK_PARSER_ERR(json_parse(&parsedJson, + (char *) v->argCtx[argIndex].buffer, + v->argCtx[argIndex].bufferLen)); + + // Estimate number of pages + uint16_t internalTokenElementIdx; + CHECK_PARSER_ERR( + json_matchKeyValue(&parsedJson, 0, (char *) "Array", JSMN_ARRAY, &internalTokenElementIdx)); + uint16_t arrayTokenCount; + CHECK_PARSER_ERR( + array_get_element_count(&parsedJson, internalTokenElementIdx, &arrayTokenCount)); + if (arrayTokenCount >= MAX_JSON_ARRAY_TOKEN_COUNT || arrayIndex >= arrayTokenCount) { + return PARSER_UNEXPECTED_NUMBER_ITEMS; + } + uint16_t arrayElementToken; char bufferUI[ARGUMENT_BUFFER_SIZE_STRING]; - CHECK_PARSER_ERR(json_extractString(bufferUI, sizeof(bufferUI), &parsedJson, 0)) + CHECK_PARSER_ERR( + array_get_nth_element(&parsedJson, internalTokenElementIdx, arrayIndex, &arrayElementToken)) + uint16_t internalTokenElemIdx; + CHECK_PARSER_ERR(json_matchKeyValue(&parsedJson, + arrayElementToken, + expectedType, + jsonType, + &internalTokenElemIdx)) + CHECK_PARSER_ERR( + json_extractToken(bufferUI, sizeof(bufferUI), &parsedJson, internalTokenElemIdx)) pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); // Check requested page is in range @@ -251,60 +280,80 @@ parser_error_t parser_printArgumentString(const parser_context_t *argumentCtx, return PARSER_OK; } -parser_error_t parser_printArgumentPublicKey(const parser_context_t *argumentCtx, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - MEMZERO(outVal, outValLen); +typedef parser_error_t (*enum_int_to_string_funtion)(uint8_t, char *, uint16_t); - parsed_json_t parsedJson = {false}; - CHECK_PARSER_ERR(json_parse(&parsedJson, (char *) argumentCtx->buffer, argumentCtx->bufferLen)); +#define ENUM_ENTRY(enumValue, string) \ + case enumValue: { \ + snprintf(outVal, outValLen, string); \ + return PARSER_OK; \ + } - char bufferUI[ARGUMENT_BUFFER_SIZE_ACCOUNT_KEY]; - CHECK_PARSER_ERR(json_extractString(bufferUI, sizeof(bufferUI), &parsedJson, 0)) - pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); +parser_error_t parser_printHashAlgoString(uint8_t enumValue, char *outVal, uint16_t outValLen) { + switch (enumValue) { + ENUM_ENTRY(1, "SHA2 256") + ENUM_ENTRY(2, "SHA2 384") + ENUM_ENTRY(3, "SHA3 256") + ENUM_ENTRY(4, "SHA3 384") + ENUM_ENTRY(5, "KMAC128 BLS BLS12 381") + ENUM_ENTRY(6, "KECCAK 256") + default: + return PARSER_UNEXPECTED_VALUE; + } +} - // Check requested page is in range - if (pageIdx > *pageCount) { - return PARSER_DISPLAY_PAGE_OUT_OF_RANGE; +parser_error_t parser_printSignatureAlgoString(uint8_t enumValue, + char *outVal, + uint16_t outValLen) { + switch (enumValue) { + ENUM_ENTRY(1, "ECDSA P256") + ENUM_ENTRY(2, "ECDSA secp256k1") + ENUM_ENTRY(3, "BLS BLS12 381") + default: + return PARSER_UNEXPECTED_VALUE; } +} - return PARSER_OK; +parser_error_t parser_printNodeRoleString(uint8_t enumValue, char *outVal, uint16_t outValLen) { + switch (enumValue) { + ENUM_ENTRY(1, "Collection") + ENUM_ENTRY(2, "Consensus") + ENUM_ENTRY(3, "Execution") + ENUM_ENTRY(4, "Verification") + ENUM_ENTRY(5, "Access") + default: + return PARSER_UNEXPECTED_VALUE; + } } -parser_error_t parser_printArgumentPublicKeys(const parser_context_t *argumentCtx, - uint8_t argumentIndex, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - MEMZERO(outVal, outValLen); +#undef ENUM_ENTRY - parsed_json_t parsedJson = {false}; - CHECK_PARSER_ERR(json_parse(&parsedJson, (char *) argumentCtx->buffer, argumentCtx->bufferLen)); +parser_error_t parser_printEnumValue(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + enum_int_to_string_funtion fun, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + MEMZERO(outVal, outValLen); - // Estimate number of pages - uint16_t internalTokenElementIdx; - CHECK_PARSER_ERR( - json_matchKeyValue(&parsedJson, 0, (char *) "Array", JSMN_ARRAY, &internalTokenElementIdx)); - uint16_t arrayTokenCount; - CHECK_PARSER_ERR( - array_get_element_count(&parsedJson, internalTokenElementIdx, &arrayTokenCount)); - if (arrayTokenCount > - MAX_JSON_ARRAY_TOKEN_COUNT) { // indirectly limits the maximum number of public keys + if (argIndex >= v->argCount) { return PARSER_UNEXPECTED_NUMBER_ITEMS; } - zemu_log_stack("PublicKeys"); + parsed_json_t parsedJson = {false}; + CHECK_PARSER_ERR(json_parse(&parsedJson, + (char *) v->argCtx[argIndex].buffer, + v->argCtx[argIndex].bufferLen)); + + char bufferUI[ARGUMENT_BUFFER_SIZE_STRING]; + uint16_t valueTokenIndex; - uint16_t arrayElementToken; - char bufferUI[ARGUMENT_BUFFER_SIZE_ACCOUNT_KEY]; - CHECK_PARSER_ERR(array_get_nth_element(&parsedJson, - internalTokenElementIdx, - argumentIndex, - &arrayElementToken)) - CHECK_PARSER_ERR(json_extractString(bufferUI, sizeof(bufferUI), &parsedJson, arrayElementToken)) + CHECK_PARSER_ERR(json_matchKeyValue(&parsedJson, 0, expectedType, jsonType, &valueTokenIndex)) + CHECK_PARSER_ERR(json_extractToken(bufferUI, sizeof(bufferUI), &parsedJson, valueTokenIndex)) + uint8_t enumValue = str_to_int8(bufferUI, bufferUI + sizeof(bufferUI), NULL); + CHECK_PARSER_ERR(fun(enumValue, bufferUI, sizeof(bufferUI))) pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); // Check requested page is in range @@ -315,54 +364,122 @@ parser_error_t parser_printArgumentPublicKeys(const parser_context_t *argumentCt return PARSER_OK; } -parser_error_t parser_printArgumentOptionalPublicKeys(const parser_context_t *argumentCtx, - uint8_t argumentIndex, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - MEMZERO(outVal, outValLen); +parser_error_t parser_printHashAlgo(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + return parser_printEnumValue(v, + argIndex, + expectedType, + jsonType, + parser_printHashAlgoString, + outVal, + outValLen, + pageIdx, + pageCount); +} + +parser_error_t parser_printSignatureAlgo(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + return parser_printEnumValue(v, + argIndex, + expectedType, + jsonType, + parser_printSignatureAlgoString, + outVal, + outValLen, + pageIdx, + pageCount); +} + +parser_error_t parser_printNodeRole(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + return parser_printEnumValue(v, + argIndex, + expectedType, + jsonType, + parser_printNodeRoleString, + outVal, + outValLen, + pageIdx, + pageCount); +} + +parser_error_t parser_printArbitraryArgument(const flow_argument_list_t *v, + uint8_t argIndex, + char *outKey, + uint16_t outKeyLen, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + if (argIndex >= v->argCount) { + return PARSER_UNEXPECTED_NUMBER_ITEMS; + } parsed_json_t parsedJson = {false}; - CHECK_PARSER_ERR(json_parse(&parsedJson, (char *) argumentCtx->buffer, argumentCtx->bufferLen)); + CHECK_PARSER_ERR(json_parse(&parsedJson, + (char *) v->argCtx[argIndex].buffer, + v->argCtx[argIndex].bufferLen)); - // Estimate number of pages - uint16_t internalTokenElementIdx; - CHECK_PARSER_ERR(json_matchOptionalArray(&parsedJson, 0, &internalTokenElementIdx)); - if (internalTokenElementIdx == JSON_MATCH_VALUE_IDX_NONE) { - if (outValLen < 5) { - return PARSER_UNEXPECTED_BUFFER_END; - } - *pageCount = 1; - strncpy_s(outVal, "None", 5); - } else { - uint16_t arrayTokenCount; - CHECK_PARSER_ERR( - array_get_element_count(&parsedJson, internalTokenElementIdx, &arrayTokenCount)); - if (arrayTokenCount > - MAX_JSON_ARRAY_TOKEN_COUNT) { // indirectly limits the maximum number of public keys - return PARSER_UNEXPECTED_NUMBER_ITEMS; - } + char bufferUI[ARGUMENT_BUFFER_SIZE_STRING]; + *pageCount = 1; // default value - zemu_log_stack("PublicKeys"); + jsmntype_t valueJsonType = JSMN_UNDEFINED; + uint16_t keyTokenIdx = 0; + uint16_t valueTokenIdx = 0; - uint16_t arrayElementToken; - char bufferUI[ARGUMENT_BUFFER_SIZE_ACCOUNT_KEY]; - CHECK_PARSER_ERR(array_get_nth_element(&parsedJson, - internalTokenElementIdx, - argumentIndex, - &arrayElementToken)) - CHECK_PARSER_ERR( - json_extractString(bufferUI, sizeof(bufferUI), &parsedJson, arrayElementToken)) - pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); + CHECK_PARSER_ERR( + json_matchArbitraryKeyValue(&parsedJson, 0, &valueJsonType, &keyTokenIdx, &valueTokenIdx)); + + switch (valueJsonType) { + case JSMN_PRIMITIVE: + case JSMN_STRING: + case JSMN_OBJECT: + case JSMN_ARRAY:; + parser_error_t err = + json_extractToken(bufferUI, sizeof(bufferUI), &parsedJson, keyTokenIdx); + if (err != PARSER_OK && err != PARSER_UNEXPECTED_BUFFER_END) { + return err; + } + // Key to long + if (err == PARSER_UNEXPECTED_BUFFER_END) { + snprintf(outKey, outKeyLen, "%d: ", (int) (argIndex + 1)); + } else { + int written = snprintf(outKey, outKeyLen, "%d: %s", (int) (argIndex + 1), bufferUI); + if (written < 0 || written >= outKeyLen) { // Error or buffer overflow + snprintf(outKey, outKeyLen, "%d: ", (int) (argIndex + 1)); + } + } - // Check requested page is in range - if (pageIdx > *pageCount) { - return PARSER_DISPLAY_PAGE_OUT_OF_RANGE; - } + err = json_extractToken(bufferUI, sizeof(bufferUI), &parsedJson, valueTokenIdx); + if (err != PARSER_OK && err != PARSER_UNEXPECTED_BUFFER_END) { + return err; + } + if (err == PARSER_UNEXPECTED_BUFFER_END) { + snprintf(bufferUI, sizeof(bufferUI), ""); + } + pageString(outVal, outValLen, bufferUI, pageIdx, pageCount); + return PARSER_OK; + default: + return PARSER_JSON_INVALID; } - - return PARSER_OK; } parser_error_t parser_printBlockId(const flow_reference_block_id_t *v, @@ -493,69 +610,285 @@ parser_error_t parser_printAuthorizer(const flow_proposal_authorizer_t *v, return PARSER_OK; } -parser_error_t parser_getItemAfterArguments(__Z_UNUSED const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Ref Block"); - return parser_printBlockId(&parser_tx_obj.referenceBlockId, +// Small trick to avoid duplicated code here which was quite error prone: +// displayIdx is either the index of page to display, or GET_NUM_ITEMS_DISPLAY_IDX_STARTING_VALUE +// In the second case this is used to count the number of pages +// If displayIdx is GET_NUM_ITEMS_DISPLAY_IDX_STARTING_VALUE, all other values are NULL/0 +// Their use should be hidden behind SCREEN macro +#define GET_NUM_ITEMS_DISPLAY_IDX_STARTING_VALUE (-1) + +parser_error_t parser_getItem_internal(int8_t *displayIdx, + char *outKey, + uint16_t outKeyLen, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount) { + // validate contract + if ((*displayIdx) >= 0) { + if (outKey == NULL || outVal == NULL || pageCount == NULL) { + return PARSER_UNEXPECTED_ERROR; + } + } else if ((*displayIdx) == GET_NUM_ITEMS_DISPLAY_IDX_STARTING_VALUE) { + if (outKey != NULL || outVal != NULL || pageCount != NULL || outKeyLen != 0 || + outValLen != 0 || pageIdx != 0) { + return PARSER_UNEXPECTED_ERROR; + } + } else { + return PARSER_UNEXPECTED_ERROR; + } + +// (*displayIdx!=INT8_MIN) : this prevents displayIdx to loop around from negative valiues to +// positive ones +// (*displayIdx)--==0 : If displayIdx is positive (and not INT8_MAX), this finds the right screen in +// the end pageCount && (*pageCount = 1) : We need to set *pageCount (in case it is not set in the +// screen) but only if it is not NULL Do not forget to break after switch/case even if you return +// from within SCREEN(true) block +#define SCREEN(condition) \ + if ((condition) && (*displayIdx != INT8_MIN) && ((*displayIdx)-- == 0) && pageCount && \ + (*pageCount = 1)) + + if (parser_tx_obj.metadataInitialized) { + // Known transaction + SCREEN(true) { + snprintf(outKey, outKeyLen, "Type"); + snprintf(outVal, outValLen, "%s", parser_tx_obj.metadata.txName); + zemu_log(outVal); + zemu_log("\n"); + return PARSER_OK; + } + } else { + if (!app_mode_expert()) { + return PARSER_UNEXPECTED_ERROR; + } + // Arbitrary message signing + SCREEN(true) { + snprintf(outKey, outKeyLen, "Script hash"); + pageStringHex(outVal, + outValLen, + (const char *) parser_tx_obj.hash.digest, + sizeof(parser_tx_obj.hash.digest), + pageIdx, + pageCount); + return PARSER_OK; + } + SCREEN(true) { + snprintf(outKey, outKeyLen, "Verify script hash"); + snprintf(outVal, outValLen, "on a secure device."); + return PARSER_OK; + } + } + + SCREEN(true) { + snprintf(outKey, outKeyLen, "ChainID"); + return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); + } + + // Arguments + if (parser_tx_obj.metadataInitialized) { + uint8_t screenCount = 0; + + if (parser_tx_obj.metadata.argCount != parser_tx_obj.arguments.argCount) { + return PARSER_UNEXPECTED_NUMBER_ITEMS; + } + + for (size_t i = 0; i < parser_tx_obj.metadata.argCount; i++) { + parsed_tx_metadata_argument_t *marg = &parser_tx_obj.metadata.arguments[i]; + switch (marg->argumentType) { + case ARGUMENT_TYPE_NORMAL: + SCREEN(true) { + zemu_log("Argument normal\n"); + snprintf(outKey, outKeyLen, "%s", marg->displayKey); + return parser_printArgument(&parser_tx_obj.arguments, + marg->argumentIndex, + marg->jsonExpectedType, + marg->jsonExpectedKind, + outVal, + outValLen, + pageIdx, + pageCount); + } + break; + case ARGUMENT_TYPE_OPTIONAL: + SCREEN(true) { + zemu_log("Argument optional\n"); + snprintf(outKey, outKeyLen, "%s", marg->displayKey); + return parser_printOptionalArgument(&parser_tx_obj.arguments, + marg->argumentIndex, + marg->jsonExpectedType, + marg->jsonExpectedKind, + outVal, + outValLen, + pageIdx, + pageCount); + } + break; + case ARGUMENT_TYPE_ARRAY: + zemu_log("Argument array\n"); + CHECK_PARSER_ERR(_countArgumentItems(&parser_tx_obj.arguments, + marg->argumentIndex, + marg->arrayMinElements, + marg->arrayMaxElements, + &screenCount)); + for (size_t j = 0; j < screenCount; j++) { + SCREEN(true) { + snprintf(outKey, outKeyLen, "%s %d", marg->displayKey, (int) (j + 1)); + return parser_printArgumentArray(&parser_tx_obj.arguments, + marg->argumentIndex, + j, + marg->jsonExpectedType, + marg->jsonExpectedKind, + outVal, + outValLen, + pageIdx, + pageCount); + } + } + break; + case ARGUMENT_TYPE_STRING: + SCREEN(true) { + zemu_log("Argument string\n"); + snprintf(outKey, outKeyLen, "%s", marg->displayKey); + return parser_printArgument(&parser_tx_obj.arguments, + marg->argumentIndex, + "String", + JSMN_STRING, + outVal, + outValLen, + pageIdx, + pageCount); + } + break; + case ARGUMENT_TYPE_HASH_ALGO: + SCREEN(true) { + zemu_log("Argument hash algo\n"); + snprintf(outKey, outKeyLen, "%s", marg->displayKey); + return parser_printHashAlgo(&parser_tx_obj.arguments, + marg->argumentIndex, + marg->jsonExpectedType, + marg->jsonExpectedKind, + outVal, + outValLen, + pageIdx, + pageCount); + } + break; + case ARGUMENT_TYPE_SIGNATURE_ALGO: + SCREEN(true) { + zemu_log("Argument signature algo\n"); + snprintf(outKey, outKeyLen, "%s", marg->displayKey); + return parser_printSignatureAlgo(&parser_tx_obj.arguments, + marg->argumentIndex, + marg->jsonExpectedType, + marg->jsonExpectedKind, + outVal, + outValLen, + pageIdx, + pageCount); + } + break; + case ARGUMENT_TYPE_NODE_ROLE: + SCREEN(true) { + zemu_log("Argument node role\n"); + snprintf(outKey, outKeyLen, "%s", marg->displayKey); + return parser_printNodeRole(&parser_tx_obj.arguments, + marg->argumentIndex, + marg->jsonExpectedType, + marg->jsonExpectedKind, + outVal, + outValLen, + pageIdx, + pageCount); + } + break; + default: + return PARSER_METADATA_ERROR; + } + } + } else { // No metadata + SCREEN(true) { + snprintf(outKey, outKeyLen, "Script arguments"); + snprintf(outVal, + outValLen, + "Number of arguments: %d", + parser_tx_obj.arguments.argCount); + return PARSER_OK; + } + for (size_t i = 0; i < parser_tx_obj.arguments.argCount; i++) { + if (!app_mode_expert()) { + return PARSER_UNEXPECTED_ERROR; + } + SCREEN(true) { + return parser_printArbitraryArgument(&parser_tx_obj.arguments, + i, + outKey, + outKeyLen, + outVal, + outValLen, + pageIdx, + pageCount); + } + } + } + + SCREEN(true) { + snprintf(outKey, outKeyLen, "Ref Block"); + return parser_printBlockId(&parser_tx_obj.referenceBlockId, + outVal, + outValLen, + pageIdx, + pageCount); + } + + SCREEN(true) { + snprintf(outKey, outKeyLen, "Gas Limit"); + return parser_printGasLimit(&parser_tx_obj.gasLimit, outVal, outValLen, pageIdx, pageCount); + } + + SCREEN(true) { + snprintf(outKey, outKeyLen, "Prop Key Addr"); + return parser_printPropKeyAddr(&parser_tx_obj.proposalKeyAddress, outVal, outValLen, pageIdx, pageCount); - case 1: - snprintf(outKey, outKeyLen, "Gas Limit"); - return parser_printGasLimit(&parser_tx_obj.gasLimit, - outVal, - outValLen, - pageIdx, - pageCount); - case 2: - snprintf(outKey, outKeyLen, "Prop Key Addr"); - return parser_printPropKeyAddr(&parser_tx_obj.proposalKeyAddress, - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Prop Key Id"); - return parser_printPropKeyId(&parser_tx_obj.proposalKeyId, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Prop Key Seq Num"); - return parser_printPropSeqNum(&parser_tx_obj.proposalKeySequenceNumber, - outVal, - outValLen, - pageIdx, - pageCount); - case 5: - snprintf(outKey, outKeyLen, "Payer"); - return parser_printPayer(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - default: - break; } - displayIdx -= 6; - if (displayIdx < parser_tx_obj.authorizers.authorizer_count) { - snprintf(outKey, outKeyLen, "Authorizer %d", displayIdx + 1); - return parser_printAuthorizer(&parser_tx_obj.authorizers.authorizer[displayIdx], + SCREEN(true) { + snprintf(outKey, outKeyLen, "Prop Key Id"); + return parser_printPropKeyId(&parser_tx_obj.proposalKeyId, + outVal, + outValLen, + pageIdx, + pageCount); + } + + SCREEN(true) { + snprintf(outKey, outKeyLen, "Prop Key Seq Num"); + return parser_printPropSeqNum(&parser_tx_obj.proposalKeySequenceNumber, outVal, outValLen, pageIdx, pageCount); } - displayIdx -= parser_tx_obj.authorizers.authorizer_count; - if (app_mode_expert() && displayIdx-- == 0) { + SCREEN(true) { + snprintf(outKey, outKeyLen, "Payer"); + return parser_printPayer(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); + } + + for (size_t i = 0; i < parser_tx_obj.authorizers.authorizer_count; i++) { + SCREEN(true) { + snprintf(outKey, outKeyLen, "Authorizer %d", (int) (i + 1)); + return parser_printAuthorizer(&parser_tx_obj.authorizers.authorizer[i], + outVal, + outValLen, + pageIdx, + pageCount); + } + } + + SCREEN(app_mode_expert()) { snprintf(outKey, outKeyLen, "Your Path"); char buffer[100]; path_options_to_string(buffer, @@ -570,12 +903,12 @@ parser_error_t parser_getItemAfterArguments(__Z_UNUSED const parser_context_t *c switch (show_address) { case SHOW_ADDRESS_YES: case SHOW_ADDRESS_YES_HASH_MISMATCH: - if (!addressUsedInTx && displayIdx-- == 0) { + SCREEN(!addressUsedInTx) { snprintf(outKey, outKeyLen, "Warning:"); snprintf(outVal, outValLen, "Incorrect address in transaction."); return PARSER_OK; } - if (show_address == SHOW_ADDRESS_YES_HASH_MISMATCH && displayIdx-- == 0) { + SCREEN(show_address == SHOW_ADDRESS_YES_HASH_MISMATCH) { snprintf(outKey, outKeyLen, "Warning:"); #if defined(TARGET_NANOX) || defined(TARGET_NANOS2) pageString(outVal, @@ -594,2561 +927,74 @@ parser_error_t parser_getItemAfterArguments(__Z_UNUSED const parser_context_t *c } break; case SHOW_ADDRESS_EMPTY_SLOT: - if (displayIdx-- == 0) { + SCREEN(true) { snprintf(outKey, outKeyLen, "Warning:"); snprintf(outVal, outValLen, "No address stored on the device."); return PARSER_OK; } break; case SHOW_ADDRESS_HDPATHS_NOT_EQUAL: - if (displayIdx-- == 0) { + SCREEN(true) { snprintf(outKey, outKeyLen, "Warning:"); snprintf(outVal, outValLen, "Different address stored on device."); return PARSER_OK; } break; default: - if (displayIdx-- == 0) { + SCREEN(true) { snprintf(outKey, outKeyLen, "Warning:"); snprintf(outVal, outValLen, "Slot error."); return PARSER_OK; } } + return PARSER_DISPLAY_IDX_OUT_OF_RANGE; + +#undef SCREEN } -parser_error_t parser_getItemTokenTransfer(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; +parser_error_t parser_getNumItems(__Z_UNUSED const parser_context_t *ctx, uint8_t *num_items) { + int8_t displays = GET_NUM_ITEMS_DISPLAY_IDX_STARTING_VALUE; + parser_error_t err = parser_getItem_internal(&displays, NULL, 0, NULL, 0, 0, NULL); - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Token Transfer"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Destination"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; + if (displays == INT8_MIN) { + return PARSER_UNEXPECTED_ERROR; } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} -#define CREATE_ACCOUNT_MAX_PUB_KEYS 5 -parser_error_t parser_getItemCreateAccount(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - zemu_log_stack("parser_getItemCreateAccount"); - *pageCount = 1; + int8_t pages = GET_NUM_ITEMS_DISPLAY_IDX_STARTING_VALUE - displays; - if (displayIdx == 0) { - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Create Account"); - return PARSER_OK; + if (pages < 0) { + *num_items = 0; + return PARSER_UNEXPECTED_ERROR; } - displayIdx--; - if (displayIdx == 0) { - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - } - displayIdx--; - uint8_t pkCount = 0; - CHECK_PARSER_ERR( - _countArgumentItems(&parser_tx_obj.arguments, 0, CREATE_ACCOUNT_MAX_PUB_KEYS, &pkCount)); - if (displayIdx < pkCount) { - snprintf(outKey, outKeyLen, "Pub key %d", displayIdx + 1); - CHECK_PARSER_ERR(parser_printArgumentPublicKeys(&parser_tx_obj.arguments.argCtx[0], - displayIdx, - outVal, - outValLen, - pageIdx, - pageCount)) - return PARSER_OK; - } - displayIdx -= pkCount; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} + *num_items = (uint8_t) pages; -parser_error_t parser_getItemAddNewKey(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Add New Key"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: { - CHECK_PARSER_ERR(parser_printArgumentPublicKey(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount)) - snprintf(outKey, outKeyLen, "Pub key"); - return PARSER_OK; - } - default: - break; + if (err == PARSER_DISPLAY_IDX_OUT_OF_RANGE) { + return PARSER_OK; } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemWithdrawUnlockedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw FLOW from Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; + if (err == PARSER_OK) { + return PARSER_UNEXPECTED_ERROR; } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); + return err; } -parser_error_t parser_getItemDepositUnlockedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Deposit FLOW to Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRegisterNode(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Register Staked Node"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - CHECK_PARSER_ERR(parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount)); - snprintf(outKey, outKeyLen, "Node ID"); - return PARSER_OK; - case 3: - snprintf(outKey, outKeyLen, "Node Role"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UInt8", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - CHECK_PARSER_ERR(parser_printArgumentString(&parser_tx_obj.arguments.argCtx[2], - outVal, - outValLen, - pageIdx, - pageCount)); - snprintf(outKey, outKeyLen, "Networking Address"); - return PARSER_OK; - case 5: - CHECK_PARSER_ERR(parser_printArgumentString(&parser_tx_obj.arguments.argCtx[3], - outVal, - outValLen, - pageIdx, - pageCount)); - snprintf(outKey, outKeyLen, "Networking Key"); - return PARSER_OK; - case 6: - CHECK_PARSER_ERR(parser_printArgumentString(&parser_tx_obj.arguments.argCtx[4], - outVal, - outValLen, - pageIdx, - pageCount)); - snprintf(outKey, outKeyLen, "Staking Key"); - return PARSER_OK; - case 7: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 5, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 8; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemStakeNewTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Stake FLOW from Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRestakeUnstakedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Restake Unstaked FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRestakeRewardedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Restake Rewarded FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemUnstakeTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Unstake FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemUnstakeAllTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Unstake All FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - default: - break; - } - displayIdx -= 2; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemWithdrawUnstakedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw Unstaked FLOW to Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemWithdrawRewardedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw Rewarded FLOW to Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRegisterOperatorNode(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Register Operator Node"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Operator Address"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[1], - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRegisterDelegator(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Register Delegator"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemDelegateNewTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Delegate FLOW from Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRestakeUnstakedDelegatedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Re-delegate Unstaked FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemRestakeRewardedDelegatedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Re-delegate Rewarded FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemUnstakeDelegatedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Unstake Delegated FLOW"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemWithdrawUnstakedDelegatedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw Undelegated FLOW to Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemWithdrawRewardedDelegatedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw Delegate Rewards to Lockbox"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItemUpdateNetworkingAddress(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Update Networking Address"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Address"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.01 -parser_error_t parser_getItemSetupStaingCollection(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Setup Staking Collection"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - default: - break; - } - displayIdx -= 2; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.02 -parser_error_t parser_getItemRegisterDelegatorSCO(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Register Delegator"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.03 -#define SCO03_REGISTER_NODE_MAX_PUB_KEYS 3 -parser_error_t parser_getItemRegisterNodeSCO(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - zemu_log_stack("parser_getItemRegisterNodeSCO"); - *pageCount = 1; - - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Register Node"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Node Role"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UInt8", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Netw. Addr."); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[2], - outVal, - outValLen, - pageIdx, - pageCount); - case 5: - snprintf(outKey, outKeyLen, "Netw. Key"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[3], - outVal, - outValLen, - pageIdx, - pageCount); - case 6: - snprintf(outKey, outKeyLen, "Staking Key"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[4], - outVal, - outValLen, - pageIdx, - pageCount); - case 7: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 5, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 8; - - uint8_t pkCount = 0; - CHECK_PARSER_ERR(_countArgumentOptionalItems(&parser_tx_obj.arguments, - 6, - SCO03_REGISTER_NODE_MAX_PUB_KEYS, - &pkCount)) - if (displayIdx < pkCount) { - snprintf(outKey, outKeyLen, "Pub key %d", displayIdx + 1); - CHECK_PARSER_ERR(parser_printArgumentOptionalPublicKeys(&parser_tx_obj.arguments.argCtx[6], - displayIdx, - outVal, - outValLen, - pageIdx, - pageCount)) - return PARSER_OK; - } - displayIdx -= pkCount; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.04 -#define SCO04_CREATE_MACHINE_ACCOUNT_MAX_PUB_KEYS 3 -parser_error_t parser_getItemCreateMachineAccount(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - zemu_log_stack("parser_getItemCreateAccount"); - *pageCount = 1; - - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Create Machine Account"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - - uint8_t pkCount = 0; - CHECK_PARSER_ERR(_countArgumentItems(&parser_tx_obj.arguments, - 1, - SCO04_CREATE_MACHINE_ACCOUNT_MAX_PUB_KEYS, - &pkCount)); - if (displayIdx < pkCount) { - snprintf(outKey, outKeyLen, "Pub key %d", displayIdx + 1); - CHECK_PARSER_ERR(parser_printArgumentPublicKeys(&parser_tx_obj.arguments.argCtx[1], - displayIdx, - outVal, - outValLen, - pageIdx, - pageCount)) - return PARSER_OK; - } - displayIdx -= pkCount; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.05 -parser_error_t parser_getItemRequestUnstaking(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Request Unstaking"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.06 -parser_error_t parser_getItemStakeNewTokensSCO(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Stake New Tokens"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.07 -parser_error_t parser_getItemStakeRewardTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Stake Reward Tokens"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.08 -parser_error_t parser_getItemStakeUnstakedTokens(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Stake Unstaked Tokens"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.09 -parser_error_t parser_getItemUnstakeAll(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Unstake All"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 3; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.10 -parser_error_t parser_getItemWithdrawRewardTokensSCO(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw Reward Tokens"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.11 -parser_error_t parser_getItemWithdrawUnstakedTokensSCO(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw Unstaked Tokens"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.12 -parser_error_t parser_getItemCloseStake(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Close Stake"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgumentOptionalDelegatorID(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.13 -parser_error_t parser_getItemTransferNode(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Transfer Node"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Address"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.14 -parser_error_t parser_getItemTransferDelegator(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Transfer Delegator"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Delegator ID"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UInt32", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 4: - snprintf(outKey, outKeyLen, "Address"); - return parser_printArgument(&parser_tx_obj.arguments, - 2, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 5; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.15 -parser_error_t parser_getItemWithdrawFromMachineAccount(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Withdraw From Machine Account"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// SCO.16 -parser_error_t parser_getItemUpdateNetworkingAddressSCO(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Update Networking Address"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Node ID"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[0], - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Address"); - return parser_printArgumentString(&parser_tx_obj.arguments.argCtx[1], - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// FUSD.01 -parser_error_t parser_getItemSetupFUSDVault(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Setup FUSD Vault"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - default: - break; - } - displayIdx -= 2; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// FUSD.02 -parser_error_t parser_getItemTransferFUSD(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Transfer FUSD"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Recipient"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// TS.01 -parser_error_t parser_getItemSetUpTopShotCollection(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Set Up Top Shot Collection"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - default: - break; - } - displayIdx -= 2; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// TS.02 -parser_error_t parser_getItemTransferTopShotMoment(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Transfer Top Shot Moment"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Moment ID"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "UInt64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Address"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// USDC.01 -parser_error_t parser_getItemSetupUSDCVault(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Setup USDC Vault"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - default: - break; - } - displayIdx -= 2; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -// USDC.02 -parser_error_t parser_getItemTransferUSDC(const parser_context_t *ctx, - uint16_t displayIdx, - char *outKey, - uint16_t outKeyLen, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount) { - *pageCount = 1; - switch (displayIdx) { - case 0: - snprintf(outKey, outKeyLen, "Type"); - snprintf(outVal, outValLen, "Transfer USDC"); - return PARSER_OK; - case 1: - snprintf(outKey, outKeyLen, "ChainID"); - return parser_printChainID(&parser_tx_obj.payer, outVal, outValLen, pageIdx, pageCount); - case 2: - snprintf(outKey, outKeyLen, "Amount"); - return parser_printArgument(&parser_tx_obj.arguments, - 0, - "UFix64", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - case 3: - snprintf(outKey, outKeyLen, "Recipient"); - return parser_printArgument(&parser_tx_obj.arguments, - 1, - "Address", - JSMN_STRING, - outVal, - outValLen, - pageIdx, - pageCount); - default: - break; - } - displayIdx -= 4; - return parser_getItemAfterArguments(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); -} - -parser_error_t parser_getItem(const parser_context_t *ctx, - uint16_t displayIdx, +parser_error_t parser_getItem(__Z_UNUSED const parser_context_t *ctx, + uint8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - MEMZERO(outKey, outKeyLen); - MEMZERO(outVal, outValLen); - snprintf(outKey, outKeyLen, "? %d", displayIdx); - snprintf(outVal, outValLen, "?"); - *pageCount = 0; - - uint8_t numItems; - CHECK_PARSER_ERR(parser_getNumItems(ctx, &numItems)) - CHECK_APP_CANARY() - - if (displayIdx < 0 || displayIdx >= numItems) { - return PARSER_NO_DATA; - } - *pageCount = 1; - - switch (parser_tx_obj.script.type) { - case SCRIPT_UNKNOWN: - return PARSER_UNEXPECTED_SCRIPT; - case SCRIPT_TOKEN_TRANSFER: - return parser_getItemTokenTransfer(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_CREATE_ACCOUNT: - return parser_getItemCreateAccount(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_ADD_NEW_KEY: - return parser_getItemAddNewKey(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH01_WITHDRAW_UNLOCKED_TOKENS: - return parser_getItemWithdrawUnlockedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH02_DEPOSIT_UNLOCKED_TOKENS: - return parser_getItemDepositUnlockedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH06_REGISTER_NODE: - return parser_getItemRegisterNode(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH08_STAKE_NEW_TOKENS: - return parser_getItemStakeNewTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH09_RESTAKE_UNSTAKED_TOKENS: - return parser_getItemRestakeUnstakedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH10_RESTAKE_REWARDED_TOKENS: - return parser_getItemRestakeRewardedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH11_UNSTAKE_TOKENS: - return parser_getItemUnstakeTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH12_UNSTAKE_ALL_TOKENS: - return parser_getItemUnstakeAllTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH13_WITHDRAW_UNSTAKED_TOKENS: - return parser_getItemWithdrawUnstakedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH14_WITHDRAW_REWARDED_TOKENS: - return parser_getItemWithdrawRewardedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH16_REGISTER_OPERATOR_NODE: - return parser_getItemRegisterOperatorNode(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH17_REGISTER_DELEGATOR: - return parser_getItemRegisterDelegator(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH19_DELEGATE_NEW_TOKENS: - return parser_getItemDelegateNewTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS: - return parser_getItemRestakeUnstakedDelegatedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS: - return parser_getItemRestakeRewardedDelegatedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH22_UNSTAKE_DELEGATED_TOKENS: - return parser_getItemUnstakeDelegatedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS: - return parser_getItemWithdrawUnstakedDelegatedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS: - return parser_getItemWithdrawRewardedDelegatedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TH25_UPDATE_NETWORKING_ADDRESS: - return parser_getItemUpdateNetworkingAddress(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO01_SETUP_STAKING_COLLECTION: - return parser_getItemSetupStaingCollection(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO02_REGISTER_DELEGATOR: - return parser_getItemRegisterDelegatorSCO(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO03_REGISTER_NODE: - return parser_getItemRegisterNodeSCO(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT: - return parser_getItemCreateMachineAccount(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO05_REQUEST_UNSTAKING: - return parser_getItemRequestUnstaking(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO06_STAKE_NEW_TOKENS: - return parser_getItemStakeNewTokensSCO(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO07_STAKE_REWARD_TOKENS: - return parser_getItemStakeRewardTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO08_STAKE_UNSTAKED_TOKENS: - return parser_getItemStakeUnstakedTokens(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO09_UNSTAKE_ALL: - return parser_getItemUnstakeAll(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO10_WITHDRAW_REWARD_TOKENS: - return parser_getItemWithdrawRewardTokensSCO(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO11_WITHDRAW_UNSTAKED_TOKENS: - return parser_getItemWithdrawUnstakedTokensSCO(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO12_CLOSE_STAKE: - return parser_getItemCloseStake(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO13_TRANSFER_NODE: - return parser_getItemTransferNode(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO14_TRANSFER_DELEGATOR: - return parser_getItemTransferDelegator(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT: - return parser_getItemWithdrawFromMachineAccount(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_SCO16_UPDATE_NETWORKING_ADDRESS: - return parser_getItemUpdateNetworkingAddressSCO(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_FUSD01_SETUP_FUSD_VAULT: - return parser_getItemSetupFUSDVault(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_FUSD02_TRANSFER_FUSD: - return parser_getItemTransferFUSD(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TS01_SET_UP_TOPSHOT_COLLECTION: - return parser_getItemSetUpTopShotCollection(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_TS02_TRANSFER_TOP_SHOT_MOMENT: - return parser_getItemTransferTopShotMoment(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_USDC01_SETUP_USDC_VAULT: - return parser_getItemSetupUSDCVault(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - case SCRIPT_USDC02_TRANSFER_USDC: - return parser_getItemTransferUSDC(ctx, - displayIdx, - outKey, - outKeyLen, - outVal, - outValLen, - pageIdx, - pageCount); - } - - return PARSER_UNEXPECTED_SCRIPT; + if (displayIdx > INT8_MAX) { + return PARSER_DISPLAY_IDX_OUT_OF_RANGE; + } + return parser_getItem_internal((int8_t *) &displayIdx, + outKey, + outKeyLen, + outVal, + outValLen, + pageIdx, + pageCount); } diff --git a/src/parser_tx.h b/src/parser_tx.h index 6254ddc2..0a38f976 100644 --- a/src/parser_tx.h +++ b/src/parser_tx.h @@ -33,11 +33,11 @@ parser_error_t parser_parse(parser_context_t *ctx, const uint8_t *data, size_t d parser_error_t parser_validate(const parser_context_t *ctx); //// returns the number of items in the current parsing context -parser_error_t parser_getNumItems(const parser_context_t *ctx, uint8_t *num_items); +parser_error_t parser_getNumItems(__Z_UNUSED const parser_context_t *ctx, uint8_t *num_items); // retrieves a readable output for each field / page -parser_error_t parser_getItem(const parser_context_t *ctx, - uint16_t displayIdx, +parser_error_t parser_getItem(__Z_UNUSED const parser_context_t *ctx, + uint8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outVal, @@ -45,23 +45,69 @@ parser_error_t parser_getItem(const parser_context_t *ctx, uint8_t pageIdx, uint8_t *pageCount); +#ifdef TEST ////for testing purposes -parser_error_t parser_printArgumentOptionalDelegatorID(const flow_argument_list_t *v, - uint8_t argIndex, - const char *expectedType, - jsmntype_t jsonType, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount); +parser_error_t parser_printArgument(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); -parser_error_t parser_printArgumentOptionalPublicKeys(const parser_context_t *argumentCtx, - uint8_t argumentIndex, - char *outVal, - uint16_t outValLen, - uint8_t pageIdx, - uint8_t *pageCount); +parser_error_t parser_printOptionalArgument(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); -#ifdef __cplusplus -} +parser_error_t parser_printArgumentArray(const flow_argument_list_t *v, + uint8_t argIndex, + uint8_t arrayIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); + +parser_error_t parser_printHashAlgo(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); + +parser_error_t parser_printSignatureAlgo(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); + +parser_error_t parser_printNodeRole(const flow_argument_list_t *v, + uint8_t argIndex, + const char *expectedType, + jsmntype_t jsonType, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); + +parser_error_t parser_printArbitraryArgument(const flow_argument_list_t *v, + uint8_t argIndex, + char *outKey, + uint16_t outKeyLen, + char *outVal, + uint16_t outValLen, + uint8_t pageIdx, + uint8_t *pageCount); #endif diff --git a/src/parser_txdef.h b/src/parser_txdef.h index 02a1123a..6b94eacb 100644 --- a/src/parser_txdef.h +++ b/src/parser_txdef.h @@ -24,60 +24,10 @@ extern "C" { #endif +#include #include #include #include "crypto.h" -#include "template_hashes.h" - -#define PARSER_MAX_ARGCOUNT 10 - -typedef enum { - SCRIPT_UNKNOWN, - SCRIPT_TOKEN_TRANSFER, - SCRIPT_CREATE_ACCOUNT, - SCRIPT_ADD_NEW_KEY, - SCRIPT_TH01_WITHDRAW_UNLOCKED_TOKENS, - SCRIPT_TH02_DEPOSIT_UNLOCKED_TOKENS, - SCRIPT_TH06_REGISTER_NODE, - SCRIPT_TH08_STAKE_NEW_TOKENS, - SCRIPT_TH09_RESTAKE_UNSTAKED_TOKENS, - SCRIPT_TH10_RESTAKE_REWARDED_TOKENS, - SCRIPT_TH11_UNSTAKE_TOKENS, - SCRIPT_TH12_UNSTAKE_ALL_TOKENS, - SCRIPT_TH13_WITHDRAW_UNSTAKED_TOKENS, - SCRIPT_TH14_WITHDRAW_REWARDED_TOKENS, - SCRIPT_TH16_REGISTER_OPERATOR_NODE, - SCRIPT_TH17_REGISTER_DELEGATOR, - SCRIPT_TH19_DELEGATE_NEW_TOKENS, - SCRIPT_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS, - SCRIPT_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS, - SCRIPT_TH22_UNSTAKE_DELEGATED_TOKENS, - SCRIPT_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS, - SCRIPT_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS, - SCRIPT_TH25_UPDATE_NETWORKING_ADDRESS, - SCRIPT_SCO01_SETUP_STAKING_COLLECTION, - SCRIPT_SCO02_REGISTER_DELEGATOR, - SCRIPT_SCO03_REGISTER_NODE, - SCRIPT_SCO04_CREATE_MACHINE_ACCOUNT, - SCRIPT_SCO05_REQUEST_UNSTAKING, - SCRIPT_SCO06_STAKE_NEW_TOKENS, - SCRIPT_SCO07_STAKE_REWARD_TOKENS, - SCRIPT_SCO08_STAKE_UNSTAKED_TOKENS, - SCRIPT_SCO09_UNSTAKE_ALL, - SCRIPT_SCO10_WITHDRAW_REWARD_TOKENS, - SCRIPT_SCO11_WITHDRAW_UNSTAKED_TOKENS, - SCRIPT_SCO12_CLOSE_STAKE, - SCRIPT_SCO13_TRANSFER_NODE, - SCRIPT_SCO14_TRANSFER_DELEGATOR, - SCRIPT_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT, - SCRIPT_SCO16_UPDATE_NETWORKING_ADDRESS, - SCRIPT_FUSD01_SETUP_FUSD_VAULT, - SCRIPT_FUSD02_TRANSFER_FUSD, - SCRIPT_TS01_SET_UP_TOPSHOT_COLLECTION, - SCRIPT_TS02_TRANSFER_TOP_SHOT_MOMENT, - SCRIPT_USDC01_SETUP_USDC_VAULT, - SCRIPT_USDC02_TRANSFER_USDC, -} script_type_e; typedef enum { CHAIN_ID_UNKNOWN, @@ -87,10 +37,8 @@ typedef enum { } chain_id_e; typedef struct { - parser_context_t ctx; uint8_t digest[CX_SHA256_SIZE]; - script_type_e type; -} flow_script_t; +} flow_script_hash_t; typedef struct { parser_context_t ctx; @@ -127,7 +75,9 @@ typedef struct { } flow_proposal_authorizers_t; typedef struct { - flow_script_t script; + bool metadataInitialized; + parsed_tx_metadata_t metadata; + flow_script_hash_t hash; flow_argument_list_t arguments; flow_reference_block_id_t referenceBlockId; flow_gaslimit_t gasLimit; diff --git a/src/rlp.c b/src/rlp.c index f2043fe7..e9b6039e 100644 --- a/src/rlp.c +++ b/src/rlp.c @@ -36,7 +36,7 @@ parser_error_t rlp_decode(const parser_context_t *input, CHECK_AVAILABLE(input, 1) uint8_t p = *outputPayload->buffer; - if (p >= 0 && p <= 0x7F) { + if (p <= 0x7F) { *outputKind = RLP_KIND_STRING; outputPayload->bufferLen = 1; outputPayload->buffer += 0; @@ -80,7 +80,7 @@ parser_error_t rlp_decode(const parser_context_t *input, return PARSER_OK; } - if (p >= 0xf8 && p <= 0xff) { + if (p >= 0xf8) { *outputKind = RLP_KIND_LIST; const uint8_t len_len = p - 0xf7; CHECK_AVAILABLE(input, 1 + len_len) diff --git a/src/template_hashes.h b/src/template_hashes.h deleted file mode 100644 index 8a9cec29..00000000 --- a/src/template_hashes.h +++ /dev/null @@ -1,250 +0,0 @@ -/******************************************************************************* - * (c) 2019 Zondax GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - ********************************************************************************/ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -#define TEMPLATE_HASH_CREATE_ACCOUNT \ - "eef2d0494448554177612e63026256258339230cbc6931ded78d6149443c6173" -#define TEMPLATE_HASH_ADD_NEW_KEY "595c86561441b32b2b91ee03f9e10ca6efa7b41bcc994f51317ec0aa9d8f8a42" - -#define TEMPLATE_HASH_TOKEN_TRANSFER_EMULATOR \ - "ca80b628d985b358ae1cb136bcd976997c942fa10dbabfeafb4e20fa66a5a5e2" -#define TEMPLATE_HASH_TOKEN_TRANSFER_TESTNET \ - "d56f4e1d2355cdcfacfd01e471459c6ef168bfdf84371a685ccf31cf3cdedc2d" -#define TEMPLATE_HASH_TOKEN_TRANSFER_MAINNET \ - "47851586d962335e3f7d9e5d11a4c527ee4b5fd1c3895e3ce1b9c2821f60b166" - -#define TEMPLATE_HASH_TH01_WITHDRAW_UNLOCKED_TOKENS_TESTNET \ - "6e73db6edd0190f5311f6adc5f2b1f27e9e60c68574b00ee90da867da52cdbb1" -#define TEMPLATE_HASH_TH01_WITHDRAW_UNLOCKED_TOKENS_MAINNET \ - "a2146e3e6e7718779ce59376b88760c154d82b7d132fe2c377114ec7cf434e7b" - -#define TEMPLATE_HASH_TH02_DEPOSIT_UNLOCKED_TOKENS_TESTNET \ - "0cb11c10b86d2afeae086ef511d28b14760eb854935a0b0dcfeecc85db847f48" -#define TEMPLATE_HASH_TH02_DEPOSIT_UNLOCKED_TOKENS_MAINNET \ - "74355dc8df221bc0d170b2fe8deacd6f1f554d6beea58ad9fee7a07f740eaefe" - -#define TEMPLATE_HASH_TH06_REGISTER_NODE_TESTNET \ - "b6a3502d2205eb05ec18772c13b91cc88a056b325c2617c57948d38cab8db600" -#define TEMPLATE_HASH_TH06_REGISTER_NODE_MAINNET \ - "b64e0e3ed9eb28789198f2b0437f55f750bfa76da99450f63be6543bde66122a" - -#define TEMPLATE_HASH_TH08_STAKE_NEW_TOKENS_TESTNET \ - "d5689b89f53214e7ce9ba7be2bb651961f7e3036b85f9250494290da9e9ba989" -#define TEMPLATE_HASH_TH08_STAKE_NEW_TOKENS_MAINNET \ - "1929e4f38894b8641848a3c0a3b9d35495b35083d42e8a3d4c928b9db4174ee8" - -#define TEMPLATE_HASH_TH09_RESTAKE_UNSTAKED_TOKENS_TESTNET \ - "23e5bfd594bb3245090e3e0bafb9cb9246fc84d30e4a35a7fde1b51085624d86" -#define TEMPLATE_HASH_TH09_RESTAKE_UNSTAKED_TOKENS_MAINNET \ - "677cc0ac3962ec136ca26dbec0aa942d926640ecf8418433f0db4b7925f5d0fe" - -#define TEMPLATE_HASH_TH10_RESTAKE_REWARDED_TOKENS_TESTNET \ - "239319825ad68178e76465b5ea18cb43f06c4ee11341f8fe9424809163a027a5" -#define TEMPLATE_HASH_TH10_RESTAKE_REWARDED_TOKENS_MAINNET \ - "28d1719c5b21c88c62665db5ba04886809f3234c27057b057c36d5f265ee9de4" - -#define TEMPLATE_HASH_TH11_UNSTAKE_TOKENS_TESTNET \ - "33e3977c45e7c23c1472bcf334d00b03ebf91b06b67c57b63b562c7b1ff5c59f" -#define TEMPLATE_HASH_TH11_UNSTAKE_TOKENS_MAINNET \ - "4e2a35541453f89c55e5dc6dbc963290380d779c81df0b3bf89c29b2a8d7a9fe" - -#define TEMPLATE_HASH_TH12_UNSTAKE_ALL_TOKENS_TESTNET \ - "f92c4cd663b2e335cd821a656bb2ebcf239b222036a7825af5e512fad4d82035" -#define TEMPLATE_HASH_TH12_UNSTAKE_ALL_TOKENS_MAINNET \ - "7099904b953b062e81e2575a2c2081b3d98bfccf5c743b4bdb224b937e292dad" - -#define TEMPLATE_HASH_TH13_WITHDRAW_UNSTAKED_TOKENS_TESTNET \ - "90097e3aff9b67f65bbada3cdedbb73d45d093ff333aaaff38809bf9910a3e39" -#define TEMPLATE_HASH_TH13_WITHDRAW_UNSTAKED_TOKENS_MAINNET \ - "dcae4faa6d689873f7caf7c5efef669f9fe1d4113e58b474b7aec1e07113a7ff" - -#define TEMPLATE_HASH_TH14_WITHDRAW_REWARDED_TOKENS_TESTNET \ - "f23406ff402f02418629432912ce732be0441b1a7e71f16c03d688a165ff7f49" -#define TEMPLATE_HASH_TH14_WITHDRAW_REWARDED_TOKENS_MAINNET \ - "9bb8f0562eea5e45c11f9289540f39c99a21c9a0fb060a7d3f832e98c2696f2d" - -#define TEMPLATE_HASH_TH16_REGISTER_OPERATOR_NODE_TESTNET \ - "c29d4024aaeb71ab478182542499e0ba3d5d303ec027252e3b8333515ee3de48" -#define TEMPLATE_HASH_TH16_REGISTER_OPERATOR_NODE_MAINNET \ - "97b3436482c5aefc1baf8b850e92c829202e468c57241dec707b6c27bd89d15c" - -#define TEMPLATE_HASH_TH17_REGISTER_DELEGATOR_TESTNET \ - "1378405c85e0c966344b196c0fce602f39e79f3938ec7b689e0c96a8703b018a" -#define TEMPLATE_HASH_TH17_REGISTER_DELEGATOR_MAINNET \ - "3cb357a97a57d9abbe5c68f0df342ee96ba97ade2013753fd2ddf47695a8c08a" - -#define TEMPLATE_HASH_TH19_DELEGATE_NEW_TOKENS_TESTNET \ - "18fad68368a4394b245db91217d7dc979e1316ab757388d416eaef831f565ab3" -#define TEMPLATE_HASH_TH19_DELEGATE_NEW_TOKENS_MAINNET \ - "802354d8b3e7908e584bcb5217637fb9f4ef045427c32d57d81ad4a390ed1a60" - -#define TEMPLATE_HASH_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS_TESTNET \ - "8776b1521b04395754734f8f40d4a0482863274f8d832973d9e011b3cbb48c85" -#define TEMPLATE_HASH_TH20_RESTAKE_UNSTAKED_DELEGATED_TOKENS_MAINNET \ - "2027331b72d8710a1a05feb6ecebadb5858d134bc8c95d6f261319cd9fa1bb95" - -#define TEMPLATE_HASH_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS_TESTNET \ - "6b40ffc9169abd75107a45da5974c7e502d38773275abb231d747e4760b7ebee" -#define TEMPLATE_HASH_TH21_RESTAKE_REWARDED_DELEGATED_TOKENS_MAINNET \ - "864edbff384335ef21c26b3bcf17d36b2b1d894afbe2b203f58099cc457971e4" - -#define TEMPLATE_HASH_TH22_UNSTAKE_DELEGATED_TOKENS_TESTNET \ - "61cbcd1c31bbfc9ceb4a5ac726e2f8b3d845a4fdf59b0ab23cbbfa8f16d7a024" -#define TEMPLATE_HASH_TH22_UNSTAKE_DELEGATED_TOKENS_MAINNET \ - "262aeddd3f49fd6222d706c02696bd7d359ba962b6c30232cc93d7cf4166a23e" - -#define TEMPLATE_HASH_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS_TESTNET \ - "2ae983f78e32b989fafa58ee7910b131fb51a2a74356f7916624695cb8bf5964" -#define TEMPLATE_HASH_TH23_WITHDRAW_UNSTAKED_DELEGATED_TOKENS_MAINNET \ - "12675a013c064b6d0ef11dbf13f92210489bf2b3d299b2f14cd09be70b37577f" - -#define TEMPLATE_HASH_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS_TESTNET \ - "385042aa453566fcff0b2bd418b837d8f46fbc23b1b46e6651b25a395bc04be8" -#define TEMPLATE_HASH_TH24_WITHDRAW_REWARDED_DELEGATED_TOKENS_MAINNET \ - "239ffa449eae5560eec3e99633dcf9c63b1e9c99996d1c5636644dceef9ec44b" - -#define TEMPLATE_HASH_TH25_UPDATE_NETWORKING_ADDRESS_TESTNET \ - "6cbe81c71d2b04dc403ea0db89377f0abc5db14d3d2bd014397b2776aa29bc3e" -#define TEMPLATE_HASH_TH25_UPDATE_NETWORKING_ADDRESS_MAINNET \ - "e79cb076f2f7da7a3039b5061916e081a823087f1560bdf3caea773992892873" - -#define TEMPLATE_HASH_SCO01_SETUP_STAKING_COLLECTION_TESTNET \ - "0e5c2445c0b1016eed4f60c429f233aa0bb223a0d9ff2aedffce00a58037a2bf" -#define TEMPLATE_HASH_SCO01_SETUP_STAKING_COLLECTION_MAINNET \ - "a524b4094fcaf1051dbf43ac33ff80bb2f553670c58eeeb719757972a25d6b50" - -#define TEMPLATE_HASH_SCO02_REGISTER_DELEGATOR_TESTNET \ - "c26f69a33ead535e7d597cec4567c6c70170e86fd85ec708f5381e50d43871e2" -#define TEMPLATE_HASH_SCO02_REGISTER_DELEGATOR_MAINNET \ - "c5636d510872a16eb06996dacb43d6a28f8f72ff1b05b2eb03416cc711d9bb1f" - -#define TEMPLATE_HASH_SCO0301_REGISTER_NODE_TESTNET \ - "f47efa834bc0559afae9a660b2efefddd0c6dc6e1bbcf9c3994e45ea9e5135ec" -#define TEMPLATE_HASH_SCO0301_REGISTER_NODE_MAINNET \ - "99997236b6d76caa298331d5cef77cbdf83c1af64584ece537a780ba4ac46883" - -#define TEMPLATE_HASH_SCO0401_CREATE_MACHINE_ACCOUNT_TESTNET \ - "e79df145af42488e3da1d1b2e50a38a2084229896d670884f278a2119dc3bf9e" -#define TEMPLATE_HASH_SCO0401_CREATE_MACHINE_ACCOUNT_MAINNET \ - "c2442b498eea025099815ea613d6407407192dc12ad70e1a4f47936db804a841" - -#define TEMPLATE_HASH_SCO05_REQUEST_UNSTAKING_TESTNET \ - "b00f6b3b9d8d7d4a9a8ad14fce11ee0edb23c39c56a8c1351e6b597f53f2fb71" -#define TEMPLATE_HASH_SCO05_REQUEST_UNSTAKING_MAINNET \ - "a552951c5e6300a118610fbf2d36b3073ee266e1d26787d04717c141976ef78c" - -#define TEMPLATE_HASH_SCO06_STAKE_NEW_TOKENS_TESTNET \ - "1307928440cee4289235793d6ff860a24315f7b6a5d5907a145dcc5f83702a2c" -#define TEMPLATE_HASH_SCO06_STAKE_NEW_TOKENS_MAINNET \ - "8e10ac56db8ec5d5e0051d3c9608fabc8edd6abed983f6d3a254e7668a54b32b" - -#define TEMPLATE_HASH_SCO07_STAKE_REWARD_TOKENS_TESTNET \ - "d7aca7113a7aa03e0afd20ee36f4873779708a02ac4c6985017740c2ecea3d62" -#define TEMPLATE_HASH_SCO07_STAKE_REWARD_TOKENS_MAINNET \ - "907c4cfd67a98a8003393c64dc74eb7a957b229352a266139a542bb105ac4c40" - -#define TEMPLATE_HASH_SCO08_STAKE_UNSTAKED_TOKENS_TESTNET \ - "3595fcd68cff445c65ad99f8d4d726b5e28807b061800769c41cbe3adb98aeec" -#define TEMPLATE_HASH_SCO08_STAKE_UNSTAKED_TOKENS_MAINNET \ - "082e690b9647182cf6969db1a0fa8e0f1728da6db01fe0d462e9f0841c268cbb" - -#define TEMPLATE_HASH_SCO09_UNSTAKE_ALL_TESTNET \ - "0bde358f3965ba2f4c18fb45b6536857c3f53d7d3b740fe66fe93a4ebf7524c1" -#define TEMPLATE_HASH_SCO09_UNSTAKE_ALL_MAINNET \ - "df9c6486baa6f8f685368ea216659239cb81fa8ebd9062a9723edb54ca0d7525" - -#define TEMPLATE_HASH_SCO10_WITHDRAW_REWARD_TOKENS_TESTNET \ - "3af182f568b37a8067d3fb524afcfe96991c85a928bf7651e730be0e15fdb72d" -#define TEMPLATE_HASH_SCO10_WITHDRAW_REWARD_TOKENS_MAINNET \ - "27a2b60d538b8bb883b602ea83d1697986a29dd69a44a9209dc75affb9e63299" - -#define TEMPLATE_HASH_SCO11_WITHDRAW_UNSTAKED_TOKENS_TESTNET \ - "68879197d961bb104a56e1e7d35660436fe4c52ed78f79d97fa50aa9e96fabf0" -#define TEMPLATE_HASH_SCO11_WITHDRAW_UNSTAKED_TOKENS_MAINNET \ - "6d50ab1ef3d74203081c38306da74f5ad8fdd489e49fba732f8ba194d0c781c8" - -#define TEMPLATE_HASH_SCO12_CLOSE_STAKE_TESTNET \ - "079aaa9cfb22138415056b43d5d91e8d73bd8bd5f37ebff4f4023d33ea6d2f25" -#define TEMPLATE_HASH_SCO12_CLOSE_STAKE_MAINNET \ - "ecdffc1ae67479bc20c06eba6c776ff37b9523660ff1cd3129a3924d92484884" - -#define TEMPLATE_HASH_SCO13_TRANSFER_NODE_TESTNET \ - "2386d7ae1a5b936e3914729ee34e01d53a8fbd2e403512ec1beccb4062c231eb" -#define TEMPLATE_HASH_SCO13_TRANSFER_NODE_MAINNET \ - "cdc3a63d0c75ea95b414becb6fbb8f5a8004236d48661cd3c3d4f540ee4d422e" - -#define TEMPLATE_HASH_SCO14_TRANSFER_DELEGATOR_TESTNET \ - "53b096b4850a30894e7b272ec5c39e2b2f4a23f8c40e76a3c64cfc63dc2999b6" -#define TEMPLATE_HASH_SCO14_TRANSFER_DELEGATOR_MAINNET \ - "b34d6fafcc5a4d0ed9cf92e168a08d0674c93341e2393ee72dde6664918ec240" - -#define TEMPLATE_HASH_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT_TESTNET \ - "39a126038522c6c964d53aaf78dde55bfe80929091510792fe49678bb22cbd96" -#define TEMPLATE_HASH_SCO15_WITHDRAW_FROM_MACHINE_ACCOUNT_MAINNET \ - "f9c48e18bda7f113e82711a4c95dfd151c6600ed9fbf46ceb22566d6c5728c6f" - -#define TEMPLATE_HASH_SCO16_UPDATE_NETWORKING_ADDRESS_TESTNET \ - "60f2cf219d56b19dc7fd223caed42dda9143c87b1b0d2c21a9652e12a3714133" -#define TEMPLATE_HASH_SCO16_UPDATE_NETWORKING_ADDRESS_MAINNET \ - "ff067b40ac67020ef864cd14842f62023254da34dd2ded56affa1364305bf1c5" - -#define TEMPLATE_HASH_FUSD01_SETUP_FUSD_VAULT_TESTNET \ - "0ffaf77ab320ce4cc9602d39b89c85f094ebcea571ed324537e703bc07b0fdc4" -#define TEMPLATE_HASH_FUSD01_SETUP_FUSD_VAULT_MAINNET \ - "aa7fecdf159e71bd0b029e40b22643fb443161e67796f42bac68e9bab4630e29" - -#define TEMPLATE_HASH_FUSD02_TRANSFER_FUSD_TESTNET \ - "f22ca4b350a79c724f6471d5a6a7a0efa7ba9aeebb7fed2843a3ddd6e42c2e1c" -#define TEMPLATE_HASH_FUSD02_TRANSFER_FUSD_MAINNET \ - "180cef7053a5f0ae66e19e3a96cc3b9eb7da29767fb5d6938239bf1f8e1dc284" - -#define TEMPLATE_HASH_TS01_SET_UP_TOPSHOT_COLLECTION_TESTNET \ - "0f0baeef9353ceee607c5be3b7c0f86792dadf20b9e9c89e831adb0199e75882" -#define TEMPLATE_HASH_TS01_SET_UP_TOPSHOT_COLLECTION_MAINNET \ - "7511848f1c27a173d966f4b868fd7efead7eeb1bbf04fc3f3e60dabc6c7f7593" - -#define TEMPLATE_HASH_TS02_TRANSFER_TOP_SHOT_MOMENT_TESTNET \ - "1ec9aea0b51409610f882f5ae4278567da675542bb378eb999f05b7c4f12f7d8" -#define TEMPLATE_HASH_TS02_TRANSFER_TOP_SHOT_MOMENT_MAINNET \ - "09d5ad21bf70dfe4f8d800db9e61a77f2f64837ae0e818c3cd67e9cea837a1cf" - -#define TEMPLATE_HASH_USDC01_SETUP_USDC_VAULT_TESTNET \ - "2defee818c0c003ca519f83517f4c7bcf9dd8664a562ec80959cb6146428f971" -#define TEMPLATE_HASH_USDC01_SETUP_USDC_VAULT_MAINNET \ - "887673892a2e2c12337394570dfa30c5669e93f537ae426690f402799514a9a1" - -#define TEMPLATE_HASH_USDC02_TRANSFER_USDC_TESTNET \ - "512485ec3f8e007853b0ea2a22fb2b9f7e2fa55fd9819171c5d013282efee60a" -#define TEMPLATE_HASH_USDC02_TRANSFER_USDC_MAINNET \ - "7ff4d9f53ba5eebda556d0ead0ca13911bc8996e2c91c5147f8787d10a324483" - -#define TEMPLATE_HASH_SCO0302_REGISTER_NODE_TESTNET \ - "9246ec9b7a5c81151156e7c2f6d356f68b1b884f88728daca46b968d9a46cd5a" -#define TEMPLATE_HASH_SCO0302_REGISTER_NODE_MAINNET \ - "79de7119aea61bdafb39cc3d1f4fa17ca802c2732726a86d2c636dbc19808b68" - -#define TEMPLATE_HASH_SCO0402_CREATE_MACHINE_ACCOUNT_TESTNET \ - "86c69d731560f3bff549c5f180eb4219bfe650ae4efec8e0c5b5ad3ebed54a92" -#define TEMPLATE_HASH_SCO0402_CREATE_MACHINE_ACCOUNT_MAINNET \ - "dd3b327b09087ea7f8e92a22a6b04a3c6ca33b868b430c4f15f251658c38c1b7" - -#ifdef __cplusplus -} -#endif diff --git a/src/tx_metadata.c b/src/tx_metadata.c new file mode 100644 index 00000000..a392b48a --- /dev/null +++ b/src/tx_metadata.c @@ -0,0 +1,276 @@ +#include "tx_metadata.h" +#include "zxmacros.h" +#include "crypto.h" +#include "parser_common.h" + +#define MAX_METADATA_NUMBER_OF_HASHES 10 +#define MAX_METADATA_STRING_LENGTH 100 + +#define METADATA_MERKLE_TREE_LEVELS 4 + +// Metadata +#define MAX_METADATA_LENGTH 255 +struct { + uint8_t metadataLength; + uint8_t buffer[MAX_METADATA_LENGTH]; + uint8_t metadataMerkleTreeValidationLevel; + uint8_t metadataMerkleTreeValidationHash[METADATA_HASH_SIZE]; +} txMetadataState; + +static const uint8_t merkleTreeRoot[METADATA_HASH_SIZE] = { + 0x73, 0x5c, 0xf1, 0xa2, 0x7b, 0xad, 0x04, 0x7c, 0xa2, 0xa5, 0x12, 0x5e, 0xa3, 0x31, 0x6e, 0xca, + 0x30, 0xb1, 0x19, 0x11, 0x31, 0x4a, 0x89, 0x35, 0x72, 0x8c, 0x16, 0x28, 0x0d, 0x2f, 0x66, 0x20}; + +static const char *STRING_TYPE_STRING = "String"; +static const char *UINT8_TYPE_STRING = "UInt8"; + +parser_error_t _validateScriptHash(const uint8_t scriptHash[METADATA_HASH_SIZE], + const uint8_t *txMetadata, + uint16_t txMetadataLength) { + if (txMetadataLength < 1) { + return PARSER_METADATA_ERROR; + } + uint8_t numberOfHashes = txMetadata[0]; + + for (size_t i = 0; i < numberOfHashes; i++) { + uint8_t thisHashMatches = 1; + for (size_t j = 0; j < METADATA_HASH_SIZE; j++) { + const uint8_t byteIdx = 1 + i * METADATA_HASH_SIZE + j; + if (numberOfHashes > MAX_METADATA_NUMBER_OF_HASHES || byteIdx >= txMetadataLength) { + return PARSER_METADATA_ERROR; + } + uint8_t hashByte = txMetadata[byteIdx]; + if (hashByte != scriptHash[j]) { + thisHashMatches = 0; + break; + } + } + if (thisHashMatches == 1) { + return PARSER_OK; + } + } + + ZEMU_TRACE(); + return PARSER_UNEXPECTED_SCRIPT; +} + +void initStoredTxMetadata() { + explicit_bzero(&txMetadataState, sizeof(txMetadataState)); +} + +parser_error_t storeTxMetadata(const uint8_t *txMetadata, uint16_t txMetadataLength) { + if (txMetadataLength > sizeof(txMetadataState.buffer)) { + return PARSER_METADATA_ERROR; + } + + // This makes sure that there is no Merkle tree proof in progress at the moment + if (txMetadataState.metadataMerkleTreeValidationLevel != 0) { + return PARSER_UNEXPECTED_ERROR; + } + + memcpy(txMetadataState.buffer, txMetadata, txMetadataLength); + txMetadataState.metadataLength = txMetadataLength; + + // calculate the Merkle tree leaf hash + zxerr_t err = sha256(txMetadataState.buffer, + txMetadataState.metadataLength, + txMetadataState.metadataMerkleTreeValidationHash); + if (err != zxerr_ok) { + return PARSER_UNEXPECTED_ERROR; + } + + txMetadataState.metadataMerkleTreeValidationLevel = 1; + + return PARSER_OK; +} + +parser_error_t validateStoredTxMetadataMerkleTreeLevel(const uint8_t *hashes, size_t hashesLen) { + // Validate Merkle tree hash level + if (txMetadataState.metadataMerkleTreeValidationLevel < 1 || + txMetadataState.metadataMerkleTreeValidationLevel > METADATA_MERKLE_TREE_LEVELS) { + return PARSER_METADATA_ERROR; + } + + // The code here works even if the number of hashes is different from 7, Note that this is not a + // security concern as a list of different length produces a different hash. In the future we + // may add efficiency by sending multiple levels in one apdus 3, 2, and 2 hashes per level + // handles 12 branches instead of 7 while still fitting into single APDU. + if (hashesLen % METADATA_HASH_SIZE != 0) { + return PARSER_METADATA_ERROR; + } + + // validate that current hash is in the list + uint8_t currentHashFound = 0; + for (size_t hashStart = 0; hashStart < hashesLen; hashStart += METADATA_HASH_SIZE) { + if (!memcmp(hashes + hashStart, + txMetadataState.metadataMerkleTreeValidationHash, + METADATA_HASH_SIZE)) { + currentHashFound = 1; + } + } + + if (!currentHashFound) { + return PARSER_METADATA_ERROR; + } + + // calculate new hash of this node and store it + zxerr_t err = sha256(hashes, hashesLen, txMetadataState.metadataMerkleTreeValidationHash); + if (err != zxerr_ok) { + return PARSER_UNEXPECTED_ERROR; + } + + txMetadataState.metadataMerkleTreeValidationLevel += 1; + return PARSER_OK; +} + +static parser_error_t parseTxMetadataInternal(const uint8_t scriptHash[METADATA_HASH_SIZE], + parsed_tx_metadata_t *parsedTxMetadata) { + ZEMU_TRACE(); + uint16_t parsed = 0; + +#define READ_CHAR(where) \ + { \ + if (!(parsed < txMetadataState.metadataLength)) { \ + return PARSER_METADATA_ERROR; \ + } \ + *(where) = txMetadataState.buffer[parsed++]; \ + } +#define READ_STRING(dest_pointer, len) \ + { \ + *(len) = 0; \ + *(dest_pointer) = (char *) txMetadataState.buffer + parsed; \ + while (*(len) <= MAX_METADATA_STRING_LENGTH) { \ + uint8_t byte = 0; \ + READ_CHAR(&byte); \ + if (byte == 0) { \ + break; \ + } \ + (*(len))++; \ + } \ + if (*(len) > MAX_METADATA_STRING_LENGTH) { \ + return PARSER_METADATA_ERROR; \ + } \ + } +#define READ_SKIP(count) \ + { parsed += (count); } + + // read number of hashes and validate script + { + uint8_t numberOfHashes = 0; + READ_CHAR(&numberOfHashes) + if (numberOfHashes > MAX_METADATA_NUMBER_OF_HASHES) { + return PARSER_METADATA_TOO_MANY_HASHES; + } + parser_error_t err = + _validateScriptHash(scriptHash, txMetadataState.buffer, txMetadataState.metadataLength); + if (err != PARSER_OK) { + return err; + } + READ_SKIP(numberOfHashes * METADATA_HASH_SIZE); + } + + // read tx name + READ_STRING(&parsedTxMetadata->txName, &parsedTxMetadata->txNameLength) + + // read arguments + { + READ_CHAR(&parsedTxMetadata->argCount) + if (parsedTxMetadata->argCount > PARSER_MAX_ARGCOUNT) { + return PARSER_TOO_MANY_ARGUMENTS; + } + _Static_assert(sizeof(parsedTxMetadata->arguments) >= PARSER_MAX_ARGCOUNT, + "Too few arguments in parsed_tx_metadata_t."); + for (int i = 0; i < parsedTxMetadata->argCount; i++) { + uint8_t argumentType = 0; + READ_CHAR(&argumentType); + if (argumentType != ARGUMENT_TYPE_NORMAL && argumentType != ARGUMENT_TYPE_OPTIONAL && + argumentType != ARGUMENT_TYPE_ARRAY && argumentType != ARGUMENT_TYPE_STRING && + argumentType != ARGUMENT_TYPE_HASH_ALGO && + argumentType != ARGUMENT_TYPE_SIGNATURE_ALGO && + argumentType != ARGUMENT_TYPE_NODE_ROLE) { + return PARSER_METADATA_ERROR; + } + parsedTxMetadata->arguments[i].argumentType = argumentType; + + if (argumentType == ARGUMENT_TYPE_ARRAY) { + READ_CHAR(&parsedTxMetadata->arguments[i].arrayMinElements); + READ_CHAR(&parsedTxMetadata->arguments[i].arrayMaxElements); + uint8_t min = parsedTxMetadata->arguments[i].arrayMinElements; + uint8_t max = parsedTxMetadata->arguments[i].arrayMaxElements; + if (min > max || max > MAX_METADATA_MAX_ARRAY_ITEMS) { + return PARSER_METADATA_ERROR; + } + } + + READ_STRING(&parsedTxMetadata->arguments[i].displayKey, + &parsedTxMetadata->arguments[i].displayKeyLength) + READ_CHAR(&parsedTxMetadata->arguments[i].argumentIndex); + + switch (argumentType) { + case ARGUMENT_TYPE_NORMAL: + case ARGUMENT_TYPE_OPTIONAL: + case ARGUMENT_TYPE_ARRAY: + READ_STRING(&parsedTxMetadata->arguments[i].jsonExpectedType, + &parsedTxMetadata->arguments[i].jsonExpectedTypeLength); + READ_CHAR(&parsedTxMetadata->arguments[i].jsonExpectedKind); + break; + case ARGUMENT_TYPE_STRING: + parsedTxMetadata->arguments[i].jsonExpectedType = STRING_TYPE_STRING; + parsedTxMetadata->arguments[i].jsonExpectedTypeLength = + strlen(STRING_TYPE_STRING); + parsedTxMetadata->arguments[i].jsonExpectedKind = JSMN_STRING; + break; + case ARGUMENT_TYPE_HASH_ALGO: + case ARGUMENT_TYPE_SIGNATURE_ALGO: + case ARGUMENT_TYPE_NODE_ROLE: + parsedTxMetadata->arguments[i].jsonExpectedType = UINT8_TYPE_STRING; + parsedTxMetadata->arguments[i].jsonExpectedTypeLength = + strlen(UINT8_TYPE_STRING); + parsedTxMetadata->arguments[i].jsonExpectedKind = JSMN_STRING; + break; + default: + return PARSER_UNEXPECTED_ERROR; + } + } + } + +#undef READ_CHAR +#undef READ_STRING +#undef READ_SKIP + + if (parsed != txMetadataState.metadataLength) { + return PARSER_METADATA_ERROR; + } + + return PARSER_OK; +} + +parser_error_t parseTxMetadata(const uint8_t scriptHash[METADATA_HASH_SIZE], + parsed_tx_metadata_t *parsedTxMetadata) { + // validate that merkle tree metadata validation is finished + if (txMetadataState.metadataMerkleTreeValidationLevel != METADATA_MERKLE_TREE_LEVELS + 1) { + return PARSER_METADATA_ERROR; + } + if (memcmp(txMetadataState.metadataMerkleTreeValidationHash, + merkleTreeRoot, + METADATA_HASH_SIZE)) { + return PARSER_METADATA_ERROR; + } + + return parseTxMetadataInternal(scriptHash, parsedTxMetadata); +} + +// For C++ testing purposes - we circumnavigate the hashing mechanism to test metadata parsing +parser_error_t _parseTxMetadata(const uint8_t scriptHash[METADATA_HASH_SIZE], + const uint8_t *txMetadata, + size_t txMetadataLength, + parsed_tx_metadata_t *parsedTxMetadata) { + memcpy(txMetadataState.buffer, txMetadata, txMetadataLength); + txMetadataState.metadataLength = txMetadataLength; + + // besides that, we want parseTxMetadata to pass + txMetadataState.metadataMerkleTreeValidationLevel = METADATA_MERKLE_TREE_LEVELS + 1; + memcpy(txMetadataState.metadataMerkleTreeValidationHash, merkleTreeRoot, METADATA_HASH_SIZE); + + return parseTxMetadataInternal(scriptHash, parsedTxMetadata); +} diff --git a/src/tx_metadata.h b/src/tx_metadata.h new file mode 100644 index 00000000..9acdb776 --- /dev/null +++ b/src/tx_metadata.h @@ -0,0 +1,84 @@ +/******************************************************************************* + * (c) 2022 Vacuumlabs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include + +typedef enum { + ARGUMENT_TYPE_NORMAL = 1, + ARGUMENT_TYPE_OPTIONAL = 2, + ARGUMENT_TYPE_ARRAY = 3, + ARGUMENT_TYPE_STRING = 4, + ARGUMENT_TYPE_HASH_ALGO = 5, + ARGUMENT_TYPE_SIGNATURE_ALGO = 6, + ARGUMENT_TYPE_NODE_ROLE = 7, +} argument_type_e; + +#define PARSER_MAX_ARGCOUNT 9 +#define METADATA_HASH_SIZE 32 // CX_SHA256_SIZE +#define MAX_METADATA_MAX_ARRAY_ITEMS 20 + +typedef struct { + argument_type_e argumentType; + uint8_t arrayMinElements; // defined only for ARGUMENT_TYPE_ARRAY + uint8_t arrayMaxElements; // defined only for ARGUMENT_TYPE_ARRAY + const char *displayKey; + uint8_t displayKeyLength; + uint8_t argumentIndex; // argument index within transaction + const char *jsonExpectedType; // pointer to null terminated string + uint8_t jsonExpectedTypeLength; + jsmntype_t jsonExpectedKind; +} parsed_tx_metadata_argument_t; + +typedef struct { + const char *txName; + uint8_t txNameLength; + uint8_t argCount; + parsed_tx_metadata_argument_t + arguments[PARSER_MAX_ARGCOUNT]; // order of arguments in which they should be displayed +} parsed_tx_metadata_t; + +void initStoredTxMetadata(); + +parser_error_t storeTxMetadata(const uint8_t *txMetadata, uint16_t txMetadataLength); + +parser_error_t validateStoredTxMetadataMerkleTreeLevel(const uint8_t *hashes, size_t hashesLen); + +parser_error_t parseTxMetadata(const uint8_t scriptHash[METADATA_HASH_SIZE], + parsed_tx_metadata_t *parsedTxMetadata); + +#ifdef TEST +// For unit tests +parser_error_t _parseTxMetadata(const uint8_t scriptHash[METADATA_HASH_SIZE], + const uint8_t *metadata, + size_t metadataLen, + parsed_tx_metadata_t *parsedTxMetadata); +parser_error_t _validateScriptHash(const uint8_t scriptHash[METADATA_HASH_SIZE], + const uint8_t *txMetadata, + uint16_t txMetadataLength); +#endif + +#ifdef __cplusplus +} +#endif diff --git a/tests/application_client/flow_command_sender.py b/tests/application_client/flow_command_sender.py index bf4770d9..59f1984a 100644 --- a/tests/application_client/flow_command_sender.py +++ b/tests/application_client/flow_command_sender.py @@ -1,5 +1,5 @@ from enum import IntEnum, Enum -from typing import Generator, Optional +from typing import Generator, Optional, List from contextlib import contextmanager from bip_utils import Bip32Utils # type: ignore[import] @@ -7,6 +7,8 @@ from ragger.bip import CurveChoice from ragger.utils.misc import split_message +from application_client.txMerkleTree import merkleTree, merkleIndex + MAX_APDU_LEN: int = 255 MAX_SLOTS = 64 @@ -26,11 +28,11 @@ class P1(IntEnum): # Parameter 1 for SIGN. P1_INIT = 0x00 P1_ADD = 0x01 - P1_LAST = 0x02 - -class P2(IntEnum): - """ Parameter 2 definitions """ - P2_MORE = 0x80 + P1_LAST_ARBITRARY = 0x02 + P1_METADATA = 0x03 + P1_PROOF_ONGOING = 0x04 + P1_PROOF_LAST = 0x05 + P1_LAST_MESSAGE = 0x10 class InsType(IntEnum): """ Application Command ID definitions """ @@ -228,10 +230,11 @@ def sign_tx( curve: CurveChoice, transaction: bytes, hash_t: HashType, + hint: str = "" ) -> Generator[None, None, None]: """ APDU sign transaction """ - data_path= _format_apdu_data(curve, hash_t, path) + data_path = _format_apdu_data(curve, hash_t, path) self.backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_INIT, @@ -244,11 +247,67 @@ def sign_tx( p1=P1.P1_ADD, data=msg) - with self.backend.exchange_async(cla=ClaType.CLA_APP, - ins=InsType.SIGN, - p1=P1.P1_LAST, - data=messages[-1]) as response: - yield response + # We need to process nft1 and nft2 options here + if hint == "message": + with self.backend.exchange_async(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_LAST_MESSAGE, + data=messages[-1]) as response: + yield response + elif hint == "arbitrary": + with self.backend.exchange_async(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_LAST_ARBITRARY, + data=messages[-1]) as response: + yield response + else: + merkleI = merkleIndex.get(hint[0:16], None) + if merkleI is None: + with self.backend.exchange_async(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_LAST_ARBITRARY, + data=messages[-1]) as response: + yield response + else: + # pylint: disable=line-too-long + metadata: str = merkleTree["children"][merkleI[0]]["children"][merkleI[1]]["children"][merkleI[2]]["children"][merkleI[3]]["children"][0] # type: ignore + merkleTreeLevel: List[str] = [ + "".join(ch["hash"] for ch in merkleTree["children"][merkleI[0]]["children"][merkleI[1]]["children"][merkleI[2]]["children"]), # type: ignore + "".join(ch["hash"] for ch in merkleTree["children"][merkleI[0]]["children"][merkleI[1]]["children"]), # type: ignore + "".join(ch["hash"] for ch in merkleTree["children"][merkleI[0]]["children"]), # type: ignore + "".join(ch["hash"] for ch in merkleTree["children"]) # type: ignore + ] + # pylint: enable=line-too-long + + #send the rest of the transaction + self.backend.exchange(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_ADD, + data=messages[-1]) + #send metadata + self.backend.exchange(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_METADATA, + data=bytes.fromhex(metadata)) + #send proof + self.backend.exchange(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_PROOF_ONGOING, + data=bytes.fromhex(merkleTreeLevel[0])) + self.backend.exchange(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_PROOF_ONGOING, + data=bytes.fromhex(merkleTreeLevel[1])) + self.backend.exchange(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_PROOF_ONGOING, + data=bytes.fromhex(merkleTreeLevel[2])) + with self.backend.exchange_async(cla=ClaType.CLA_APP, + ins=InsType.SIGN, + p1=P1.P1_PROOF_LAST, + data=bytes.fromhex(merkleTreeLevel[3])) as response: + yield response + def get_async_response(self) -> Optional[RAPDU]: """ Asynchronous APDU response """ diff --git a/tests/application_client/txMerkleTree.py b/tests/application_client/txMerkleTree.py new file mode 100644 index 00000000..54a429b3 --- /dev/null +++ b/tests/application_client/txMerkleTree.py @@ -0,0 +1,2731 @@ +# pylint: skip-file +merkleTree = { + "hash": "735cf1a27bad047ca2a5125ea3316eca30b11911314a8935728c16280d2f6620", + "children": [ + { + "hash": "1558ab4cfb5964941db2fc676d05313b86f5d942336aca4d9e24f8b56d1b7d7a", + "children": [ + { + "hash": "fcdc17a0f2e78292d36c066caa52d36fb408fded1aad61a1929023d15e406ee9", + "children": [ + { + "hash": "fdc9ed4c7d1cdd61c7d54718392d3b0d250fe687ca5dc36e49707cb82888f459", + "children": [ + { + "hash": "c43cfe541b0628a223d0b531ae1c92b537d22438fd19fd98ecf8b7759a56699c", + "children": [ + "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003" + ] + }, + { + "hash": "85992afd3e94015265d19d9fc7c7cbe04e1a1496b2fd6473dcae0c6b404f77c8", + "children": [ + "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003" + ] + }, + { + "hash": "b5b81e2d8d86b60ca608b709cbe3c61fd45cd371699896cd26e915bda7814bdd", + "children": [ + "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003" + ] + }, + { + "hash": "eb6840289224d8506819dd85ba3a8b8df504de1079e5353e5ab36d20f987569f", + "children": [ + "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001" + ] + }, + { + "hash": "8f69d764860ca602c24cb13858d1cc69b94f37f1c34edf1156b3ab9409e8a7ef", + "children": [ + "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003" + ] + }, + { + "hash": "b022a37057dc012ce244a35a12a71ca047552658e04d49cdb92c6b9d0c706cc8", + "children": [ + "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003" + ] + }, + { + "hash": "1daeeae363c035bbf2446c0c50d742444fbf9c392eccbec90f9b70591f217cbb", + "children": [ + "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001" + ] + } + ] + }, + { + "hash": "a70ead9e24c865314c33b8768be2e8e2750fab13a3d6be4687949c1f3893b69c", + "children": [ + { + "hash": "89a752fa39b7d339b5a04635204216ff4278e278813e64f6b31c338cd3df4a0e", + "children": [ + "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003" + ] + }, + { + "hash": "b25b557e667aeddba8df949aa742b31a11ced37bf3bdcace14b59b568c9daa14", + "children": [ + "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003" + ] + }, + { + "hash": "bad7c2258efa36af460d217adf5b7739ba66dfd31d3c2441f88c01d355170bdc", + "children": [ + "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000" + ] + }, + { + "hash": "b32d0691dd4929520d2addca959ec126a63e6a01f1ad4947343c0768a3036f41", + "children": [ + "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003" + ] + }, + { + "hash": "a43b931de8c8c285d05762b822f4d36a8e0c5de4dbd5ce33467df492a673a899", + "children": [ + "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008" + ] + }, + { + "hash": "a2cac12372d6a5dab1cb8f8be672b75997c22a4ea701c9d23d0e0e2fb5b4de19", + "children": [ + "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003" + ] + }, + { + "hash": "df6227d64fed44dcd61eb061157b6a9a2e182f8fcd79fda4710c85af12255ae0", + "children": [ + "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + } + ] + }, + { + "hash": "32412631b4049669cbe83a3dfb6a6d56d34f7c67fc8eea50f674d45aebfc83c7", + "children": [ + { + "hash": "67ac47bc65b310ba21562b3fb8c1b436ba8b509fdfa7a0a70edd1c432d421ae7", + "children": [ + "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "9971a7634ebcf14d2dfe0402d186d9bd0fec69de373cc55e882de7f3c0059581", + "children": [ + "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "35ae4ac757793d273e6701e73734e4f56614e67c477d4ee692c67824d2f1d5b3", + "children": [ + "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "0d5445e0555e58eb96de8fdd7470b5b7225f73c82c68a8588afb3f5b31e9c10e", + "children": [ + "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000" + ] + }, + { + "hash": "44c44658ab36e0b3ed2ea3ef1cd86a292dd62b9e5430970a13973fd59b2c8b7a", + "children": [ + "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "44d6231310dc495279669eec80dce4093ca842aceb5d601b55fb37da492fe7a5", + "children": [ + "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003" + ] + }, + { + "hash": "bb8882bd3ffbfee5e0e57b74d8d850c255e33cb7a8bfe5b624d71edb85dc9c2b", + "children": [ + "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003" + ] + } + ] + }, + { + "hash": "f2070a3be507580f1c50209a1121e1c980d81c0dd51b8e55adc5b5ddafa97adc", + "children": [ + { + "hash": "1db501d2b5dda1232062fba4dd77bf1b3bd7d4366a6aaf74ccf406cf2caf7e0b", + "children": [ + "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003" + ] + }, + { + "hash": "acb03d0e42854eb5c740c44a11766c7b5da2a80f4019c31e1e9260f1db23ae5b", + "children": [ + "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003" + ] + }, + { + "hash": "33fe26f945b44c9546cbdf940bef096cd4d6103692963a2f7f122c683a58d710", + "children": [ + "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003" + ] + }, + { + "hash": "9d766664f3c0a0ef7609cef3cf8a6e0fd1c69a847db1480492975bef77e565b1", + "children": [ + "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001" + ] + }, + { + "hash": "9e8bff812b2f0545ce028d95c6daf6ca0ae43e212cf3c24f3ccfeb5bd03316b7", + "children": [ + "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003" + ] + }, + { + "hash": "a1a73556f8af48486b19446e0fe0a0e706d551aeeea3f0f1e410804b3128a3ad", + "children": [ + "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + }, + { + "hash": "88bd487007bf1a5be47cea944d797895181258aba33c77e8c75fe7e38ad91929", + "children": [ + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + }, + { + "hash": "63981575be94aaa4f14daa9f27c6c2fd72b46de3994ed71abaec45aa4b40615a", + "children": [ + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + }, + { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "children": [ + "" + ] + } + ] + } + ] + } + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + }, + { + "hash": "94a4bf5f458f2def50f807bf419501bfd5e77a084c30592aa3803a522a3c272e", + "children": [ + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch", + "Empty branch" + ] + } + ] +} + +merkleIndex = { + "c4a7efd8708396e8": [ + 0, + 0, + 0, + 0 + ], + "1c9d1210f2bf129b": [ + 0, + 0, + 0, + 1 + ], + "6c7ab72837fdce77": [ + 0, + 0, + 0, + 2 + ], + "3ccbbfebf10c47c4": [ + 0, + 0, + 0, + 3 + ], + "0246076f1cf5d316": [ + 0, + 0, + 0, + 3 + ], + "c9b9a61562808127": [ + 0, + 0, + 0, + 4 + ], + "6e5b8c83a3e8445e": [ + 0, + 0, + 0, + 4 + ], + "0adc1ebe8246cf76": [ + 0, + 0, + 0, + 5 + ], + "d8f826a451d80869": [ + 0, + 0, + 0, + 5 + ], + "54fae25bb09f5a32": [ + 0, + 0, + 0, + 6 + ], + "a25e07dea5eb6083": [ + 0, + 0, + 0, + 6 + ], + "db0518029ca76e6f": [ + 0, + 0, + 1, + 0 + ], + "2cb2cd6408a35f08": [ + 0, + 0, + 1, + 0 + ], + "e4b837ce4d30be9b": [ + 0, + 0, + 1, + 1 + ], + "91fd4533a93f55a7": [ + 0, + 0, + 1, + 1 + ], + "861784e7ac135a9c": [ + 0, + 0, + 1, + 2 + ], + "69f30decc15bd781": [ + 0, + 0, + 1, + 2 + ], + "e093df9c425be9cd": [ + 0, + 0, + 1, + 3 + ], + "0a41e53ad3c9c1c1": [ + 0, + 0, + 1, + 3 + ], + "deb5f758f3eb3b12": [ + 0, + 0, + 1, + 4 + ], + "3b0b2bbc3a2ad674": [ + 0, + 0, + 1, + 4 + ], + "4c1ad61500bcd0d3": [ + 0, + 0, + 1, + 5 + ], + "f0a6cedb6703cd4c": [ + 0, + 0, + 1, + 5 + ], + "2d59f2c2c402f919": [ + 0, + 0, + 1, + 6 + ], + "f26c058a127500fc": [ + 0, + 0, + 1, + 6 + ], + "cf2b039500773524": [ + 0, + 0, + 2, + 0 + ], + "4c06589343524860": [ + 0, + 0, + 2, + 0 + ], + "4395faf2e515eea4": [ + 0, + 0, + 2, + 1 + ], + "c989e8b3beb9c2eb": [ + 0, + 0, + 2, + 1 + ], + "0b1721f2a8ef6c0c": [ + 0, + 0, + 2, + 2 + ], + "fe6adb75bf22b203": [ + 0, + 0, + 2, + 2 + ], + "c84843e3399be2ce": [ + 0, + 0, + 2, + 3 + ], + "1c8256fb857f6c6f": [ + 0, + 0, + 2, + 3 + ], + "5a07ca4c016973bd": [ + 0, + 0, + 2, + 4 + ], + "fbd8ebbfff7a88b6": [ + 0, + 0, + 2, + 4 + ], + "01fd4ea83d20510d": [ + 0, + 0, + 2, + 5 + ], + "c2484f17e640e285": [ + 0, + 0, + 2, + 5 + ], + "7e216d96d75414b2": [ + 0, + 0, + 2, + 6 + ], + "a0fad319bf8aede6": [ + 0, + 0, + 2, + 6 + ], + "a39eedbe19f252c2": [ + 0, + 0, + 3, + 0 + ], + "3578c7f3b015df3a": [ + 0, + 0, + 3, + 0 + ], + "135df83060f854d4": [ + 0, + 0, + 3, + 1 + ], + "8c7b8460f11ae786": [ + 0, + 0, + 3, + 1 + ], + "fdd40862af04dc36": [ + 0, + 0, + 3, + 2 + ], + "e12b16ef4218b8ce": [ + 0, + 0, + 3, + 2 + ], + "3a68789d8cd56e6c": [ + 0, + 0, + 3, + 3 + ], + "68d24560d9e49318": [ + 0, + 0, + 3, + 3 + ], + "094798e93daeacaa": [ + 0, + 0, + 3, + 4 + ], + "4a830e6f93f74179": [ + 0, + 0, + 3, + 4 + ], + "17ffcd6066789367": [ + 0, + 0, + 3, + 5 + ], + "038382a947fa96bf": [ + 0, + 0, + 3, + 5 + ] +} + diff --git a/tests/manifestPayloadCases.json b/tests/manifestPayloadCases.json new file mode 100644 index 00000000..e13e48bd --- /dev/null +++ b/tests/manifestPayloadCases.json @@ -0,0 +1,4474 @@ +[ + { + "title": "FA.01 - Create Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9045af90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "title": "FA.02 - Add Key", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90423f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "title": "FA.03 - Remove Key", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9016af90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "title": "FT.01 - Setup Fungible Token Vault", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9080cf90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001", + "hash": "3ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa28" + }, + { + "title": "FT.02 - Transfer Fungible Token with Paths", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f907a7f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b607142988" + }, + { + "title": "FT.03 - Transfer Fungible Token with Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90944f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003", + "hash": "0adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2" + }, + { + "title": "NFT.01 - Setup NFT Collection", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90702f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001", + "hash": "54fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333" + }, + { + "title": "NFT.02 - Transfer NFT with Paths", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f907f0f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d" + }, + { + "title": "NFT.03 - Transfer NFT with Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90925f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003", + "hash": "e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b" + }, + { + "title": "TH.01 - Withdraw Unlocked FLOW", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90423f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b1" + }, + { + "title": "TH.02 - Deposit Unlocked FLOW", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f903adf903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "17ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253" + }, + { + "title": "SCO.01 - Setup Staking Collection", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078396563613262333862313862356466650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90df5f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078396563613262333862313862356466650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000", + "hash": "861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b1814" + }, + { + "title": "SCO.02 - Register Delegator", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9040af90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f9483" + }, + { + "title": "SCO.03 - Register Node", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90b28f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008", + "hash": "deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb82800921" + }, + { + "title": "SCO.04 - Create Machine Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9082ff9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003", + "hash": "4c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4" + }, + { + "title": "SCO.05 - Request Unstaking - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90434f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "title": "SCO.05 - Request Unstaking - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9044ff9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "title": "SCO.06 - Stake New Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904b0f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "title": "SCO.06 - Stake New Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904cbf904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "title": "SCO.09 - Unstake All", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90398f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000", + "hash": "c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90501f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904e6f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904f5f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90510f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "title": "SCO.12 - Close Stake - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90468f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "title": "SCO.12 - Close Stake - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9044df90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "title": "SCO.13 - Transfer Node", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90971f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003", + "hash": "a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee87" + }, + { + "title": "SCO.14 - Transfer Delegator", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9091ef9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003", + "hash": "135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e075468913" + }, + { + "title": "SCO.15 - Withdraw From Machine Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90419f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8" + }, + { + "title": "SCO.16 - Update Networking Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f903daf903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001", + "hash": "3a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f" + }, + { + "title": "FA.01 - Create Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9045af90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "title": "FA.02 - Add Key", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90423f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "title": "FA.03 - Remove Key", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9016af90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "title": "FT.01 - Setup Fungible Token Vault", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9080cf90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001", + "hash": "0246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b" + }, + { + "title": "FT.02 - Transfer Fungible Token with Paths", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f907a7f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "6e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e" + }, + { + "title": "FT.03 - Transfer Fungible Token with Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90944f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003", + "hash": "d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e600" + }, + { + "title": "NFT.01 - Setup NFT Collection", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90702f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001", + "hash": "a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e76611" + }, + { + "title": "NFT.02 - Transfer NFT with Paths", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f907f0f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd1365" + }, + { + "title": "NFT.03 - Transfer NFT with Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90925f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003", + "hash": "91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb5" + }, + { + "title": "TH.01 - Withdraw Unlocked FLOW", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90423f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "4a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9" + }, + { + "title": "TH.02 - Deposit Unlocked FLOW", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f903adf903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b61" + }, + { + "title": "SCO.01 - Setup Staking Collection", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90df5f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000", + "hash": "69f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d9" + }, + { + "title": "SCO.02 - Register Delegator", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9040af90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "0a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c47300448744" + }, + { + "title": "SCO.03 - Register Node", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90b28f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008", + "hash": "3b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df5267" + }, + { + "title": "SCO.04 - Create Machine Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9082ff9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003", + "hash": "f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01" + }, + { + "title": "SCO.05 - Request Unstaking - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90434f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "title": "SCO.05 - Request Unstaking - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9044ff9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "title": "SCO.06 - Stake New Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904b0f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "title": "SCO.06 - Stake New Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904cbf904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "title": "SCO.09 - Unstake All", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90398f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000", + "hash": "1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90501f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904e6f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904f5f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90510f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "title": "SCO.12 - Close Stake - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90468f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "title": "SCO.12 - Close Stake - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9044df90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "title": "SCO.13 - Transfer Node", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90971f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003", + "hash": "3578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c56279" + }, + { + "title": "SCO.14 - Transfer Delegator", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9091ef9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003", + "hash": "8c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc" + }, + { + "title": "SCO.15 - Withdraw From Machine Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90419f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c0369034" + }, + { + "title": "SCO.16 - Update Networking Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f903daf903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001", + "hash": "68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d" + } +] \ No newline at end of file diff --git a/tests/snapshots/nanos/test_app_mainmenu/00002.png b/tests/snapshots/nanos/test_app_mainmenu/00002.png deleted file mode 100644 index 9cd3e207..00000000 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00002.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00003.png b/tests/snapshots/nanos/test_app_mainmenu/00003.png deleted file mode 100644 index 645316f9..00000000 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00003.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00000.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00000.png similarity index 100% rename from tests/snapshots/nanos/test_app_mainmenu/00000.png rename to tests/snapshots/nanos/test_app_mainmenu/part0/00000.png diff --git a/tests/snapshots/nanos/test_app_mainmenu/00001.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00001.png similarity index 100% rename from tests/snapshots/nanos/test_app_mainmenu/00001.png rename to tests/snapshots/nanos/test_app_mainmenu/part0/00001.png diff --git a/tests/snapshots/nanos/test_app_mainmenu/part0/00002.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00002.png new file mode 100644 index 00000000..b03863df Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part0/00003.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00003.png new file mode 100644 index 00000000..1020d323 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part0/00003.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00004.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00004.png similarity index 100% rename from tests/snapshots/nanos/test_app_mainmenu/00004.png rename to tests/snapshots/nanos/test_app_mainmenu/part0/00004.png diff --git a/tests/snapshots/nanos/test_app_mainmenu/00005.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00005.png similarity index 100% rename from tests/snapshots/nanos/test_app_mainmenu/00005.png rename to tests/snapshots/nanos/test_app_mainmenu/part0/00005.png diff --git a/tests/snapshots/nanos/test_app_mainmenu/part0/00006.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00006.png new file mode 100644 index 00000000..cc87ae5a Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part0/00006.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part0/00007.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00007.png new file mode 100644 index 00000000..1020d323 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part0/00007.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part0/00008.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00008.png new file mode 100644 index 00000000..4fb80c48 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part0/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00012.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00012.png rename to tests/snapshots/nanos/test_app_mainmenu/part0/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00013.png b/tests/snapshots/nanos/test_app_mainmenu/part0/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00013.png rename to tests/snapshots/nanos/test_app_mainmenu/part0/00010.png diff --git a/tests/snapshots/nanos/test_app_mainmenu/part1/00000.png b/tests/snapshots/nanos/test_app_mainmenu/part1/00000.png new file mode 100644 index 00000000..83f75e1a Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part1/00000.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part1/00001.png b/tests/snapshots/nanos/test_app_mainmenu/part1/00001.png new file mode 100644 index 00000000..8dd6bf33 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part1/00001.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part1/00002.png b/tests/snapshots/nanos/test_app_mainmenu/part1/00002.png new file mode 100644 index 00000000..775403e7 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part1/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00012.png b/tests/snapshots/nanos/test_app_mainmenu/part1/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00012.png rename to tests/snapshots/nanos/test_app_mainmenu/part1/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00013.png b/tests/snapshots/nanos/test_app_mainmenu/part1/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00013.png rename to tests/snapshots/nanos/test_app_mainmenu/part1/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00016.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00016.png rename to tests/snapshots/nanos/test_app_mainmenu/part2/00000.png diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00001.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00001.png new file mode 100644 index 00000000..85d9725b Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00001.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00002.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00002.png new file mode 100644 index 00000000..b03863df Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00002.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00003.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00003.png new file mode 100644 index 00000000..1020d323 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00003.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00004.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00004.png new file mode 100644 index 00000000..35658717 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00004.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00005.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00005.png new file mode 100644 index 00000000..536f7eef Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00005.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00006.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00006.png new file mode 100644 index 00000000..a5e93026 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00006.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00007.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00007.png new file mode 100644 index 00000000..a5a3c9d0 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00007.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00008.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00008.png new file mode 100644 index 00000000..1a225040 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00008.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00009.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00009.png new file mode 100644 index 00000000..184a6a37 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00009.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/part2/00010.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00010.png new file mode 100644 index 00000000..9c86acbc Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/part2/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00011.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00011.png rename to tests/snapshots/nanos/test_app_mainmenu/part2/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00012.png b/tests/snapshots/nanos/test_app_mainmenu/part2/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00012.png rename to tests/snapshots/nanos/test_app_mainmenu/part2/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00015.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00000.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00001.png new file mode 100644 index 00000000..85d9725b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00002.png new file mode 100644 index 00000000..50bcea8e Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part0/00003.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00000.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00000.png new file mode 100644 index 00000000..70598a2d Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00000.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00001.png new file mode 100644 index 00000000..00e0092e Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00002.png new file mode 100644 index 00000000..73afa650 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00001.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00003.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00004.png new file mode 100644 index 00000000..02b83e1a Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00004.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00005.png new file mode 100644 index 00000000..10ada0ae Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00005.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00006.png new file mode 100644 index 00000000..113e2f17 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00006.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00007.png new file mode 100644 index 00000000..3d3eec0a Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00003.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00004.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00005.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00006.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00007.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00008.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00009.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00010.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00015.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00016.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00016.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00017.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00017.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00017.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00018.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00018.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00019.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00019.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00019.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00020.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00020.png new file mode 100644 index 00000000..473e0424 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00020.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00021.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00021.png new file mode 100644 index 00000000..9672a90d Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00021.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00022.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00022.png new file mode 100644 index 00000000..87e8b08d Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00022.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00023.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00003.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00023.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00024.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00004.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00024.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00025.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00005.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00025.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00026.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00006.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00026.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00027.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00007.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00027.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00028.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00008.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00028.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00029.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00009.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00029.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00030.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00010.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00030.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00031.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00031.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00031.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00032.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00011.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00032.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00033.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00015.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00033.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00034.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part1/00034.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00000.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00000.png new file mode 100644 index 00000000..634b7b14 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00000.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00001.png new file mode 100644 index 00000000..7705fa97 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00002.png new file mode 100644 index 00000000..73afa650 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00002.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00003.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00003.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00004.png new file mode 100644 index 00000000..02b83e1a Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00004.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00005.png new file mode 100644 index 00000000..10ada0ae Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00005.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00006.png new file mode 100644 index 00000000..113e2f17 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00006.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00007.png new file mode 100644 index 00000000..8d0f1284 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00006.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00007.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00008.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00010.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00011.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00010.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00011.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00013.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00014.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00014.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00015.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00015.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00016.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00016.png new file mode 100644 index 00000000..d4fe3ec9 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00017.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00017.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00017.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00018.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00018.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00019.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00019.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part2/00019.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00000.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00000.png new file mode 100644 index 00000000..c27ddacb Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00000.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00001.png new file mode 100644 index 00000000..35e07a7a Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00002.png new file mode 100644 index 00000000..73afa650 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00002.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00003.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00003.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00004.png new file mode 100644 index 00000000..1ea271dc Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00004.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00005.png new file mode 100644 index 00000000..10ada0ae Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00005.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00006.png new file mode 100644 index 00000000..113e2f17 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00006.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00007.png new file mode 100644 index 00000000..da101198 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00007.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00008.png new file mode 100644 index 00000000..05985b11 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00009.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00010.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00011.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00011.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00012.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00012.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00014.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00014.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00015.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00015.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00016.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00016.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00016.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00017.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00017.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00011.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00014.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part3/00020.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00000.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00000.png new file mode 100644 index 00000000..bfe2a4b7 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00000.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00001.png new file mode 100644 index 00000000..c55730cb Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00002.png new file mode 100644 index 00000000..73afa650 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00001.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00003.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00004.png new file mode 100644 index 00000000..1ea271dc Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00004.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00005.png new file mode 100644 index 00000000..10ada0ae Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00005.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00006.png new file mode 100644 index 00000000..113e2f17 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00006.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00007.png new file mode 100644 index 00000000..14f737ef Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00007.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00008.png new file mode 100644 index 00000000..05985b11 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00009.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00010.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00011.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00012.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00012.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00014.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00015.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00016.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00016.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00016.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00017.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00017.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00014.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00012.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00012.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part4/00020.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00000.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00000.png new file mode 100644 index 00000000..ca71ec43 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00000.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00001.png new file mode 100644 index 00000000..b6988265 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00002.png new file mode 100644 index 00000000..73afa650 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00002.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00003.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00003.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00004.png new file mode 100644 index 00000000..aa91287b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00004.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00005.png new file mode 100644 index 00000000..10ada0ae Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00005.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00006.png new file mode 100644 index 00000000..113e2f17 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00006.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00007.png new file mode 100644 index 00000000..f6ff33ef Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00007.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00008.png new file mode 100644 index 00000000..2563e131 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00008.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00009.png new file mode 100644 index 00000000..d895f1ee Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00009.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00010.png new file mode 100644 index 00000000..b61b5366 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00010.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00011.png new file mode 100644 index 00000000..acba1fbb Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00011.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00012.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00012.png new file mode 100644 index 00000000..3f5b0bf5 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00012.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00013.png new file mode 100644 index 00000000..efb19e50 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00013.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00014.png new file mode 100644 index 00000000..d297b277 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00014.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00015.png new file mode 100644 index 00000000..9d62f58c Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00015.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00016.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00016.png new file mode 100644 index 00000000..a6340336 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00016.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00017.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00017.png new file mode 100644 index 00000000..859eb478 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00017.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00018.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00018.png new file mode 100644 index 00000000..ecd5e297 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00018.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00019.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00019.png new file mode 100644 index 00000000..bab1ddb7 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00019.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00020.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00020.png new file mode 100644 index 00000000..025ef326 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00021.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00005.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00021.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00022.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00006.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00022.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00023.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00007.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00023.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00024.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00024.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00024.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00025.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00009.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00025.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00026.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00010.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00026.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00027.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00027.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00027.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00028.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00028.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00028.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00029.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00029.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00029.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00030.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00030.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00030.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00030.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00031.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00031.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00031.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00031.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00032.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00032.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00032.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part5/00032.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00000.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00000.png new file mode 100644 index 00000000..05692ca6 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00000.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00001.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00001.png new file mode 100644 index 00000000..efa5fd9a Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00001.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00002.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00002.png new file mode 100644 index 00000000..73afa650 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00002.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00003.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00003.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00004.png new file mode 100644 index 00000000..aa91287b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00004.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00005.png new file mode 100644 index 00000000..10ada0ae Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00005.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00006.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00006.png new file mode 100644 index 00000000..113e2f17 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00006.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00007.png new file mode 100644 index 00000000..f6ff33ef Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00007.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00008.png new file mode 100644 index 00000000..2563e131 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00008.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00009.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00009.png new file mode 100644 index 00000000..d895f1ee Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00009.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00010.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00010.png new file mode 100644 index 00000000..b61b5366 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00010.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00011.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00011.png new file mode 100644 index 00000000..acba1fbb Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00011.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00012.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00012.png new file mode 100644 index 00000000..3f5b0bf5 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00012.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00013.png new file mode 100644 index 00000000..efb19e50 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00013.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00014.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00014.png new file mode 100644 index 00000000..d297b277 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00014.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00015.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00015.png new file mode 100644 index 00000000..9d62f58c Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00015.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00016.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00016.png new file mode 100644 index 00000000..a6340336 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00016.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00017.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00017.png new file mode 100644 index 00000000..859eb478 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00017.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00018.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00018.png new file mode 100644 index 00000000..ecd5e297 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00018.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00019.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00019.png new file mode 100644 index 00000000..bab1ddb7 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00019.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00020.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00020.png new file mode 100644 index 00000000..e46b8d9e Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00020.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00021.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00021.png new file mode 100644 index 00000000..97a0274d Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00021.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00022.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00022.png new file mode 100644 index 00000000..fbc00f4e Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00022.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00023.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00023.png new file mode 100644 index 00000000..c45d184c Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00023.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00024.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00024.png new file mode 100644 index 00000000..518b36a9 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00024.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00025.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00025.png new file mode 100644 index 00000000..5c38079c Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00025.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00003.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00026.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00003.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00026.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00004.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00027.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00004.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00027.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00005.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00028.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00005.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00028.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00029.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00029.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00029.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00007.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00030.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00007.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00030.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00008.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00031.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00008.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00031.png diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00032.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00032.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00032.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00033.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00033.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00033.png differ diff --git a/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00034.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00034.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00034.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00035.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00035.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00012.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00036.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00012.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00036.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00013.png b/tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00037.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00013.png rename to tests/snapshots/nanos/test_arbitrary_transaction_signing_expert/part6/00037.png diff --git a/tests/snapshots/nanos/test_message_normal/part0/00000.png b/tests/snapshots/nanos/test_message_normal/part0/00000.png new file mode 100644 index 00000000..ca19a0c3 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part0/00000.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part0/00001.png b/tests/snapshots/nanos/test_message_normal/part0/00001.png new file mode 100644 index 00000000..57c1d8cc Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part0/00001.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part0/00002.png b/tests/snapshots/nanos/test_message_normal/part0/00002.png new file mode 100644 index 00000000..8782b4de Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part0/00003.png b/tests/snapshots/nanos/test_message_normal/part0/00003.png new file mode 100644 index 00000000..f9c1e1e8 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part0/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00012.png b/tests/snapshots/nanos/test_message_normal/part0/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00012.png rename to tests/snapshots/nanos/test_message_normal/part0/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00013.png b/tests/snapshots/nanos/test_message_normal/part0/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00013.png rename to tests/snapshots/nanos/test_message_normal/part0/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00013.png b/tests/snapshots/nanos/test_message_normal/part1/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00013.png rename to tests/snapshots/nanos/test_message_normal/part1/00000.png diff --git a/tests/snapshots/nanos/test_message_normal/part1/00001.png b/tests/snapshots/nanos/test_message_normal/part1/00001.png new file mode 100644 index 00000000..85d9725b Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part1/00001.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part1/00002.png b/tests/snapshots/nanos/test_message_normal/part1/00002.png new file mode 100644 index 00000000..50bcea8e Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part1/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00013.png b/tests/snapshots/nanos/test_message_normal/part1/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00013.png rename to tests/snapshots/nanos/test_message_normal/part1/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00012.png b/tests/snapshots/nanos/test_message_normal/part1/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00012.png rename to tests/snapshots/nanos/test_message_normal/part1/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00015.png b/tests/snapshots/nanos/test_message_normal/part1/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00015.png rename to tests/snapshots/nanos/test_message_normal/part1/00005.png diff --git a/tests/snapshots/nanos/test_message_normal/part2/00000.png b/tests/snapshots/nanos/test_message_normal/part2/00000.png new file mode 100644 index 00000000..ca19a0c3 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part2/00000.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part2/00001.png b/tests/snapshots/nanos/test_message_normal/part2/00001.png new file mode 100644 index 00000000..72882952 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part2/00001.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part2/00002.png b/tests/snapshots/nanos/test_message_normal/part2/00002.png new file mode 100644 index 00000000..7e7b1fa6 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part2/00002.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part2/00003.png b/tests/snapshots/nanos/test_message_normal/part2/00003.png new file mode 100644 index 00000000..547d2fb7 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part2/00003.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part2/00004.png b/tests/snapshots/nanos/test_message_normal/part2/00004.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part2/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00012.png b/tests/snapshots/nanos/test_message_normal/part2/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00012.png rename to tests/snapshots/nanos/test_message_normal/part2/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00028.png b/tests/snapshots/nanos/test_message_normal/part2/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00028.png rename to tests/snapshots/nanos/test_message_normal/part2/00006.png diff --git a/tests/snapshots/nanos/test_message_normal/part3/00000.png b/tests/snapshots/nanos/test_message_normal/part3/00000.png new file mode 100644 index 00000000..ca19a0c3 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part3/00000.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part3/00001.png b/tests/snapshots/nanos/test_message_normal/part3/00001.png new file mode 100644 index 00000000..57c1d8cc Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part3/00001.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part3/00002.png b/tests/snapshots/nanos/test_message_normal/part3/00002.png new file mode 100644 index 00000000..8782b4de Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part3/00002.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part3/00003.png b/tests/snapshots/nanos/test_message_normal/part3/00003.png new file mode 100644 index 00000000..f9c1e1e8 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part3/00003.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part3/00004.png b/tests/snapshots/nanos/test_message_normal/part3/00004.png new file mode 100644 index 00000000..d4fe3ec9 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part3/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00012.png b/tests/snapshots/nanos/test_message_normal/part3/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00012.png rename to tests/snapshots/nanos/test_message_normal/part3/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00027.png b/tests/snapshots/nanos/test_message_normal/part3/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00027.png rename to tests/snapshots/nanos/test_message_normal/part3/00006.png diff --git a/tests/snapshots/nanos/test_message_normal/part4/00000.png b/tests/snapshots/nanos/test_message_normal/part4/00000.png new file mode 100644 index 00000000..ca19a0c3 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part4/00000.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part4/00001.png b/tests/snapshots/nanos/test_message_normal/part4/00001.png new file mode 100644 index 00000000..72882952 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part4/00001.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part4/00002.png b/tests/snapshots/nanos/test_message_normal/part4/00002.png new file mode 100644 index 00000000..7e7b1fa6 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part4/00002.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part4/00003.png b/tests/snapshots/nanos/test_message_normal/part4/00003.png new file mode 100644 index 00000000..547d2fb7 Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part4/00003.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part4/00004.png b/tests/snapshots/nanos/test_message_normal/part4/00004.png new file mode 100644 index 00000000..697c001b Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part4/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00012.png b/tests/snapshots/nanos/test_message_normal/part4/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00012.png rename to tests/snapshots/nanos/test_message_normal/part4/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00042.png b/tests/snapshots/nanos/test_message_normal/part4/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00042.png rename to tests/snapshots/nanos/test_message_normal/part4/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00014.png b/tests/snapshots/nanos/test_message_normal/part5/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00014.png rename to tests/snapshots/nanos/test_message_normal/part5/00000.png diff --git a/tests/snapshots/nanos/test_message_normal/part5/00001.png b/tests/snapshots/nanos/test_message_normal/part5/00001.png new file mode 100644 index 00000000..50bcea8e Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part5/00001.png differ diff --git a/tests/snapshots/nanos/test_message_normal/part5/00002.png b/tests/snapshots/nanos/test_message_normal/part5/00002.png new file mode 100644 index 00000000..85d9725b Binary files /dev/null and b/tests/snapshots/nanos/test_message_normal/part5/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00029.png b/tests/snapshots/nanos/test_message_normal/part5/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00029.png rename to tests/snapshots/nanos/test_message_normal/part5/00003.png diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00000.png b/tests/snapshots/nanos/test_transaction_expert/part1/00000.png index b338763e..f3548e94 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00000.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00001.png b/tests/snapshots/nanos/test_transaction_expert/part1/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00001.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00002.png b/tests/snapshots/nanos/test_transaction_expert/part1/00002.png index 1556d048..279ad0e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00002.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00003.png b/tests/snapshots/nanos/test_transaction_expert/part1/00003.png index 6e60758e..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00003.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00004.png b/tests/snapshots/nanos/test_transaction_expert/part1/00004.png index 05f27c3a..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00004.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00005.png b/tests/snapshots/nanos/test_transaction_expert/part1/00005.png index 5ebc5665..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00005.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00006.png b/tests/snapshots/nanos/test_transaction_expert/part1/00006.png index f39812e8..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00006.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00007.png b/tests/snapshots/nanos/test_transaction_expert/part1/00007.png index 59aa8dce..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00007.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00008.png b/tests/snapshots/nanos/test_transaction_expert/part1/00008.png index 44e7069e..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00008.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00009.png b/tests/snapshots/nanos/test_transaction_expert/part1/00009.png index 7a5610fa..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00009.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00010.png b/tests/snapshots/nanos/test_transaction_expert/part1/00010.png index 6bcaeb70..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00010.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00011.png b/tests/snapshots/nanos/test_transaction_expert/part1/00011.png index b131bbe9..697c001b 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00011.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00012.png b/tests/snapshots/nanos/test_transaction_expert/part1/00012.png index 697c001b..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00012.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00013.png b/tests/snapshots/nanos/test_transaction_expert/part1/00013.png index 52b06db9..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00013.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part1/00014.png b/tests/snapshots/nanos/test_transaction_expert/part1/00014.png index 006c26ab..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part1/00014.png and b/tests/snapshots/nanos/test_transaction_expert/part1/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00000.png b/tests/snapshots/nanos/test_transaction_expert/part2/00000.png index b338763e..f3548e94 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00000.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00001.png b/tests/snapshots/nanos/test_transaction_expert/part2/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00001.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00002.png b/tests/snapshots/nanos/test_transaction_expert/part2/00002.png index 1556d048..279ad0e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00002.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00003.png b/tests/snapshots/nanos/test_transaction_expert/part2/00003.png index 6e60758e..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00003.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00004.png b/tests/snapshots/nanos/test_transaction_expert/part2/00004.png index 05f27c3a..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00004.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00005.png b/tests/snapshots/nanos/test_transaction_expert/part2/00005.png index 5ebc5665..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00005.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00006.png b/tests/snapshots/nanos/test_transaction_expert/part2/00006.png index f39812e8..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00006.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00007.png b/tests/snapshots/nanos/test_transaction_expert/part2/00007.png index 59aa8dce..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00007.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00008.png b/tests/snapshots/nanos/test_transaction_expert/part2/00008.png index 44e7069e..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00008.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00009.png b/tests/snapshots/nanos/test_transaction_expert/part2/00009.png index 7a5610fa..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00009.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00010.png b/tests/snapshots/nanos/test_transaction_expert/part2/00010.png index 6bcaeb70..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00010.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00011.png b/tests/snapshots/nanos/test_transaction_expert/part2/00011.png index b131bbe9..d4fe3ec9 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00011.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00012.png b/tests/snapshots/nanos/test_transaction_expert/part2/00012.png index d4fe3ec9..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00012.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00013.png b/tests/snapshots/nanos/test_transaction_expert/part2/00013.png index 52b06db9..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00013.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_expert/part2/00014.png b/tests/snapshots/nanos/test_transaction_expert/part2/00014.png index 006c26ab..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_expert/part2/00014.png and b/tests/snapshots/nanos/test_transaction_expert/part2/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00000.png new file mode 100644 index 00000000..a91c2dbb Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00002.png new file mode 100644 index 00000000..b37540ce Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00003.png new file mode 100644 index 00000000..db6a7d25 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00004.png new file mode 100644 index 00000000..83d83228 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00005.png new file mode 100644 index 00000000..5a8a3fe7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00006.png new file mode 100644 index 00000000..2fcbfd21 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00007.png new file mode 100644 index 00000000..8cf8ba28 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00008.png new file mode 100644 index 00000000..16c4f3e4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00009.png new file mode 100644 index 00000000..aca36545 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00017.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Mainnet/00020.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00000.png new file mode 100644 index 00000000..a91c2dbb Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00002.png new file mode 100644 index 00000000..b37540ce Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00003.png new file mode 100644 index 00000000..db6a7d25 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00004.png new file mode 100644 index 00000000..83d83228 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00005.png new file mode 100644 index 00000000..5a8a3fe7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00006.png new file mode 100644 index 00000000..2fcbfd21 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00007.png new file mode 100644 index 00000000..8cf8ba28 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00008.png new file mode 100644 index 00000000..16c4f3e4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00009.png new file mode 100644 index 00000000..aca36545 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00013.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00016.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00017.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00017.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00027.png b/tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.01-Testnet/00020.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00000.png new file mode 100644 index 00000000..3b57cb27 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00002.png new file mode 100644 index 00000000..b37540ce Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00003.png new file mode 100644 index 00000000..db6a7d25 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00004.png new file mode 100644 index 00000000..83d83228 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00005.png new file mode 100644 index 00000000..5a8a3fe7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00006.png new file mode 100644 index 00000000..2fcbfd21 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00007.png new file mode 100644 index 00000000..8cf8ba28 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00008.png new file mode 100644 index 00000000..16c4f3e4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00009.png new file mode 100644 index 00000000..aca36545 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00017.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00027.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Mainnet/00020.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00000.png new file mode 100644 index 00000000..3b57cb27 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00002.png new file mode 100644 index 00000000..b37540ce Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00003.png new file mode 100644 index 00000000..db6a7d25 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00004.png new file mode 100644 index 00000000..83d83228 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00005.png new file mode 100644 index 00000000..5a8a3fe7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00006.png new file mode 100644 index 00000000..2fcbfd21 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00007.png new file mode 100644 index 00000000..8cf8ba28 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00008.png new file mode 100644 index 00000000..16c4f3e4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00009.png new file mode 100644 index 00000000..aca36545 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00013.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00016.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00017.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00017.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00026.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.02-Testnet/00020.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00000.png new file mode 100644 index 00000000..f3548e94 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00002.png new file mode 100644 index 00000000..279ad0e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00000.png new file mode 100644 index 00000000..f3548e94 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00002.png new file mode 100644 index 00000000..279ad0e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00006.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00009.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00010.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FA.03-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00000.png new file mode 100644 index 00000000..0bebe0b2 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00002.png new file mode 100644 index 00000000..2be0a0fe Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00003.png new file mode 100644 index 00000000..c36b99b7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00000.png new file mode 100644 index 00000000..0bebe0b2 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00002.png new file mode 100644 index 00000000..c2f0ceec Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00003.png new file mode 100644 index 00000000..c36b99b7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00007.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00010.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00011.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.01-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00000.png new file mode 100644 index 00000000..0f75684b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part1/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00004.png new file mode 100644 index 00000000..0b93ed8a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00005.png new file mode 100644 index 00000000..11a05096 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00015.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00000.png new file mode 100644 index 00000000..0f75684b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part10/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00003.png new file mode 100644 index 00000000..6ae7f856 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00004.png new file mode 100644 index 00000000..0b93ed8a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00005.png new file mode 100644 index 00000000..11a05096 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00015.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.02-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00000.png new file mode 100644 index 00000000..f407f500 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part13/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00004.png new file mode 100644 index 00000000..2be0a0fe Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00005.png new file mode 100644 index 00000000..c36b99b7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00015.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00000.png new file mode 100644 index 00000000..f407f500 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00002.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00003.png new file mode 100644 index 00000000..6ae7f856 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00004.png new file mode 100644 index 00000000..c2f0ceec Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00005.png new file mode 100644 index 00000000..c36b99b7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00006.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00007.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00008.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00010.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00011.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00014.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00015.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00016.png b/tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/FT.03-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00000.png new file mode 100644 index 00000000..cf4a9ea2 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00001.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00002.png new file mode 100644 index 00000000..d9b0b8ae Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00003.png new file mode 100644 index 00000000..1f8c322f Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00004.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00005.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00006.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00007.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00008.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00009.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00010.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00011.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00012.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00013.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00014.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00000.png new file mode 100644 index 00000000..cf4a9ea2 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00002.png new file mode 100644 index 00000000..cf42400d Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00003.png new file mode 100644 index 00000000..1f8c322f Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00004.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00005.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00006.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00007.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00008.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00009.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00010.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00011.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00012.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00013.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00014.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.01-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00000.png new file mode 100644 index 00000000..fb6fff2d Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00001.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00002.png new file mode 100644 index 00000000..29cf1675 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00003.png new file mode 100644 index 00000000..a14e0144 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00004.png new file mode 100644 index 00000000..0b93ed8a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00005.png new file mode 100644 index 00000000..11a05096 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00006.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00007.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00008.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00009.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00010.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00011.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00012.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00013.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00014.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00015.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00016.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00000.png new file mode 100644 index 00000000..fb6fff2d Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00002.png new file mode 100644 index 00000000..6ae7f856 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00003.png new file mode 100644 index 00000000..a14e0144 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00004.png new file mode 100644 index 00000000..0b93ed8a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00005.png new file mode 100644 index 00000000..11a05096 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00006.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00007.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00008.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00010.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00011.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00014.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00015.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00016.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.02-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00000.png new file mode 100644 index 00000000..eeebe87e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00001.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00002.png new file mode 100644 index 00000000..29cf1675 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00003.png new file mode 100644 index 00000000..a14e0144 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00004.png new file mode 100644 index 00000000..d9b0b8ae Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00005.png new file mode 100644 index 00000000..1f8c322f Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00006.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00007.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00008.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00009.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00010.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00011.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00012.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00013.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00014.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00015.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00016.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00000.png new file mode 100644 index 00000000..eeebe87e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00002.png new file mode 100644 index 00000000..6ae7f856 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00003.png new file mode 100644 index 00000000..a14e0144 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00004.png new file mode 100644 index 00000000..cf42400d Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00005.png new file mode 100644 index 00000000..1f8c322f Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00006.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00007.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00008.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00010.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00011.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00014.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00015.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00016.png b/tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/NFT.03-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00000.png new file mode 100644 index 00000000..71fe6d33 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00005.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00008.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00009.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.01-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part20/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part20/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part12/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part12/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00008.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00011.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00012.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.02-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part21/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part21/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00004.png new file mode 100644 index 00000000..a8c8537e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00005.png new file mode 100644 index 00000000..33c20042 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00017.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00017.png new file mode 100644 index 00000000..9cd7d6d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00018.png new file mode 100644 index 00000000..f8cda9d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00019.png new file mode 100644 index 00000000..58ce0d61 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00020.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00020.png new file mode 100644 index 00000000..51eaf803 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00021.png new file mode 100644 index 00000000..fc204344 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00021.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00022.png new file mode 100644 index 00000000..ad9cf569 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00022.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00023.png new file mode 100644 index 00000000..0024df31 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00023.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00024.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00025.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00026.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00026.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00027.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00027.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00028.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00028.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00029.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00029.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00030.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00030.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00031.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part14/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00031.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00032.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00032.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00041.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00033.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00041.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00033.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00034.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Mainnet/00034.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00004.png new file mode 100644 index 00000000..a8c8537e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00005.png new file mode 100644 index 00000000..33c20042 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00017.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00017.png new file mode 100644 index 00000000..9cd7d6d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00018.png new file mode 100644 index 00000000..f8cda9d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00019.png new file mode 100644 index 00000000..58ce0d61 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00020.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00020.png new file mode 100644 index 00000000..51eaf803 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00021.png new file mode 100644 index 00000000..fc204344 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00021.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00022.png new file mode 100644 index 00000000..ad9cf569 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00022.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00023.png new file mode 100644 index 00000000..0024df31 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00023.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00018.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00024.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00025.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00025.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00020.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00026.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00020.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00026.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00027.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00027.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00028.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00028.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00029.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00023.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00029.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00030.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00030.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00030.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00031.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00031.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00031.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00032.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00032.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00028.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00033.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00028.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00033.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00034.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.03-Testnet/00034.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00004.png new file mode 100644 index 00000000..9cd7d6d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00005.png new file mode 100644 index 00000000..f8cda9d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00006.png new file mode 100644 index 00000000..58ce0d61 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00007.png new file mode 100644 index 00000000..51eaf803 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00008.png new file mode 100644 index 00000000..fc204344 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00009.png new file mode 100644 index 00000000..ad9cf569 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00010.png new file mode 100644 index 00000000..0024df31 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00017.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00017.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00018.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00021.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00017.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00018.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00026.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00026.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00020.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Mainnet/00021.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00004.png new file mode 100644 index 00000000..9cd7d6d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00005.png new file mode 100644 index 00000000..f8cda9d5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00006.png new file mode 100644 index 00000000..58ce0d61 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00007.png new file mode 100644 index 00000000..51eaf803 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00008.png new file mode 100644 index 00000000..fc204344 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00009.png new file mode 100644 index 00000000..ad9cf569 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00010.png new file mode 100644 index 00000000..0024df31 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00023.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00024.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00024.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00014.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00026.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00017.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00017.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00018.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00025.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00025.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00019.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00020.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00021.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.04-Testnet/00021.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-1-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00000.png new file mode 100644 index 00000000..9f89513b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00028.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00028.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00000.png new file mode 100644 index 00000000..9f89513b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00015.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.05-2-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00032.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00032.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00032.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00032.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00033.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00033.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00034.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00034.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00036.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00036.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00037.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00037.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00040.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00040.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00042.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00042.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-1-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00000.png new file mode 100644 index 00000000..a0f0650b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part26/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part26/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00020.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00020.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00021.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00023.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00024.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00024.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00014.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00000.png new file mode 100644 index 00000000..a0f0650b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00017.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00017.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00018.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00021.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00025.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00025.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.06-2-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00000.png new file mode 100644 index 00000000..f2344062 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part27/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00029.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00029.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00000.png new file mode 100644 index 00000000..f2344062 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-1-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00000.png new file mode 100644 index 00000000..f2344062 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00026.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Mainnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00000.png new file mode 100644 index 00000000..f2344062 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00031.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00031.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.07-2-Testnet/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part29/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part29/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00041.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00041.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part15/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00000.png new file mode 100644 index 00000000..928cc79e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00000.png new file mode 100644 index 00000000..928cc79e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00028.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00028.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.08-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part30/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part30/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00014.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00000.png new file mode 100644 index 00000000..c75cb164 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00007.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00010.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00011.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00014.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.09-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00000.png new file mode 100644 index 00000000..fea8ded4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part31/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part31/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00018.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00020.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00020.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00023.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00013.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00026.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00015.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00000.png new file mode 100644 index 00000000..fea8ded4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00017.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00017.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00018.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00018.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00021.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00025.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00025.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00000.png new file mode 100644 index 00000000..fea8ded4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part32/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part32/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00022.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00022.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00023.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00024.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00024.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00026.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00026.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part16/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00030.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00030.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00000.png new file mode 100644 index 00000000..fea8ded4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00032.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00032.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00033.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00033.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00034.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00034.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00036.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00036.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00037.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00037.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00040.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00040.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.10-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part33/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part17/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00019.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00019.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00020.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00020.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00021.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00021.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00023.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00023.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00024.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00024.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00027.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00027.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00000.png new file mode 100644 index 00000000..87c761d7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part34/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part18/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00000.png new file mode 100644 index 00000000..87c761d7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part56/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part49/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part8/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00014.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.11-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part35/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part35/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part57/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00007.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00007.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part42/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part58/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00008.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00011.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00012.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00000.png new file mode 100644 index 00000000..074877bd Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part36/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part36/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part59/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part43/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00000.png new file mode 100644 index 00000000..074877bd Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part60/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00004.png new file mode 100644 index 00000000..20ccf889 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00008.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00011.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00012.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.12-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part37/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part37/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00003.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part11/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00003.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part44/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00000.png new file mode 100644 index 00000000..6f3fed9c Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00004.png new file mode 100644 index 00000000..14d1281f Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00008.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00011.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00012.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.13-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part38/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part45/00005.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00005.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00006.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00007.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00008.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00010.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00011.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00013.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00014.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Mainnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00000.png new file mode 100644 index 00000000..da2d26d4 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00004.png new file mode 100644 index 00000000..0e6e4d81 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00005.png new file mode 100644 index 00000000..14d1281f Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00006.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00007.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00008.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00009.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00010.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00011.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00012.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00013.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00014.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00015.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00016.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.14-Testnet/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part39/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part46/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00000.png new file mode 100644 index 00000000..22ce9c64 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00016.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00008.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00011.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00012.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.15-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00004.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00004.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00008.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00008.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00011.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00011.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00012.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00012.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Mainnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00000.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part47/00000.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00000.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00002.png new file mode 100644 index 00000000..d9d217d6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00003.png new file mode 100644 index 00000000..dab7d1f7 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part19/00002.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part19/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00004.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00005.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00006.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00007.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00008.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00009.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00010.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00011.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00012.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00013.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00014.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00014.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00015.png b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00015.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/SCO.16-Testnet/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00000.png new file mode 100644 index 00000000..13c894bb Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part40/00001.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part40/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00002.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part6/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00003.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00004.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00005.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00006.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00007.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00008.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00009.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00010.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part2/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00011.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00012.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00013.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00000.png new file mode 100644 index 00000000..13c894bb Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00002.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part7/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00003.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00004.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00005.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00006.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00007.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00008.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00009.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00010.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00011.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00012.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00013.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00000.png new file mode 100644 index 00000000..3544109c Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part41/00001.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part41/00001.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00001.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00002.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part9/00002.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00003.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00004.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00005.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00006.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00006.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00006.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00007.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00008.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00009.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00009.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00009.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00010.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part4/00010.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00010.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00011.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00012.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00013.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Mainnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00000.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00000.png new file mode 100644 index 00000000..3544109c Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00001.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00001.png new file mode 100644 index 00000000..f2422205 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00016.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00002.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00016.png rename to tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00002.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00003.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00003.png new file mode 100644 index 00000000..05f27c3a Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00004.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00004.png new file mode 100644 index 00000000..5ebc5665 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00005.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00005.png new file mode 100644 index 00000000..f39812e8 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00006.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00006.png new file mode 100644 index 00000000..7a7c2869 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00007.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00007.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00008.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00008.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00009.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00009.png new file mode 100644 index 00000000..61e19bd5 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00010.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00010.png new file mode 100644 index 00000000..0a500512 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00011.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00011.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00012.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00012.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00013.png b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00013.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_manifest/TH.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part1/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part1/00000.png deleted file mode 100644 index 80a6c6fd..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part1/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part10/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part10/00000.png deleted file mode 100644 index f4275ed4..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part10/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part11/00000.png deleted file mode 100644 index 6466ac31..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part11/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part11/00002.png b/tests/snapshots/nanos/test_transaction_manifest/part11/00002.png deleted file mode 100644 index 549343eb..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part11/00002.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part13/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part13/00000.png deleted file mode 100644 index 89f87ca0..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part13/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part14/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part14/00000.png deleted file mode 100644 index 9f559904..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part14/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part15/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part15/00000.png deleted file mode 100644 index b11129cf..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part15/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part16/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part16/00000.png deleted file mode 100644 index 44994967..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part16/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part17/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part17/00000.png deleted file mode 100644 index e0a7c624..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part17/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part18/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part18/00000.png deleted file mode 100644 index 21d5d081..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part18/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part2/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part2/00000.png deleted file mode 100644 index 619b593b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part2/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part22/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part22/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part22/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part22/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part22/00017.png deleted file mode 100644 index 16a9a0bf..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part22/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00021.png b/tests/snapshots/nanos/test_transaction_manifest/part22/00021.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part22/00021.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part23/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part23/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part23/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part23/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part23/00020.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part23/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00000.png deleted file mode 100644 index cf0d6cbc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00006.png deleted file mode 100644 index 9c1f1495..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00007.png deleted file mode 100644 index 09f6db4d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00008.png deleted file mode 100644 index b13ec60b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00009.png deleted file mode 100644 index 34e99c4c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00017.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00018.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00018.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00018.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00019.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00019.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00019.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00020.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00021.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00021.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00021.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00025.png b/tests/snapshots/nanos/test_transaction_manifest/part24/00025.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part24/00025.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00000.png deleted file mode 100644 index cf0d6cbc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00006.png deleted file mode 100644 index 9c1f1495..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00007.png deleted file mode 100644 index 09f6db4d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00008.png deleted file mode 100644 index b13ec60b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00009.png deleted file mode 100644 index 34e99c4c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00017.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00018.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00018.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00018.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00019.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00019.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00019.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00020.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00021.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00021.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00021.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00022.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00022.png deleted file mode 100644 index ea09ceef..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00022.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00023.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00023.png deleted file mode 100644 index 6f2dec3f..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00023.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00024.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00024.png deleted file mode 100644 index e2b9709e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00024.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00025.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00025.png deleted file mode 100644 index eb37414c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00025.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00026.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00026.png deleted file mode 100644 index ad854afc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00026.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00027.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00027.png deleted file mode 100644 index ef575b29..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00027.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00028.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00028.png deleted file mode 100644 index ab2df447..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00028.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00029.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00029.png deleted file mode 100644 index e85c2e71..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00029.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00030.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00030.png deleted file mode 100644 index 052c4e24..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00030.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00031.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00031.png deleted file mode 100644 index 99c7be6c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00031.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00035.png b/tests/snapshots/nanos/test_transaction_manifest/part25/00035.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part25/00035.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part27/00004.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part27/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part27/00005.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part27/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part27/00006.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part27/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part27/00007.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part27/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part27/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part27/00008.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part27/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00000.png deleted file mode 100644 index 3cfd0dba..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00004.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00005.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00006.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00007.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00008.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00009.png deleted file mode 100644 index ea09ceef..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00010.png deleted file mode 100644 index 6f2dec3f..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00011.png deleted file mode 100644 index e2b9709e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00012.png deleted file mode 100644 index eb37414c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00013.png deleted file mode 100644 index ad854afc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00014.png deleted file mode 100644 index ef575b29..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00015.png deleted file mode 100644 index ab2df447..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00016.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00016.png deleted file mode 100644 index e85c2e71..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00016.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00017.png deleted file mode 100644 index 052c4e24..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00018.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00018.png deleted file mode 100644 index 99c7be6c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00018.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00022.png b/tests/snapshots/nanos/test_transaction_manifest/part28/00022.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part28/00022.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00000.png deleted file mode 100644 index b8910344..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00005.png deleted file mode 100644 index 9d9edab4..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00006.png deleted file mode 100644 index 0da8d0f0..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00007.png deleted file mode 100644 index cf608601..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00008.png deleted file mode 100644 index c7a9e100..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00009.png deleted file mode 100644 index 24d5dff4..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part3/00020.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part3/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part33/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part33/00000.png deleted file mode 100644 index 4e52e182..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part33/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part34/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part34/00000.png deleted file mode 100644 index 4e52e182..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part34/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part38/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part38/00000.png deleted file mode 100644 index 8f018560..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part38/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part39/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part39/00000.png deleted file mode 100644 index 8f018560..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part39/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part4/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part4/00000.png deleted file mode 100644 index 07ab1bde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part4/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part42/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part42/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part42/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part43/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part43/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part43/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part44/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part44/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part44/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part45/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part45/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part45/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part46/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part46/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part46/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part47/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part47/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part47/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part48/00000.png deleted file mode 100644 index 234726cb..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part48/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part48/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part48/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part48/00005.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part48/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part49/00000.png deleted file mode 100644 index 237ebf49..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part49/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part49/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part49/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part49/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part5/00000.png deleted file mode 100644 index da7cfa38..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part5/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part5/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part5/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part5/00006.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part5/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part50/00000.png deleted file mode 100644 index 819c001d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part50/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part50/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part50/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part50/00005.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part50/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part51/00000.png deleted file mode 100644 index ef96a14f..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part51/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part51/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part51/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00002.png b/tests/snapshots/nanos/test_transaction_manifest/part51/00002.png deleted file mode 100644 index a19038a2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part51/00002.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00003.png b/tests/snapshots/nanos/test_transaction_manifest/part51/00003.png deleted file mode 100644 index faba627b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part51/00003.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part51/00007.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part51/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part52/00000.png deleted file mode 100644 index df13ffdc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part52/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part52/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part52/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part52/00005.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part52/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part53/00000.png deleted file mode 100644 index c1fa3a9c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part53/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part53/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part53/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00002.png b/tests/snapshots/nanos/test_transaction_manifest/part53/00002.png deleted file mode 100644 index a044fb95..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part53/00002.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part53/00007.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part53/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00000.png deleted file mode 100644 index cf0d6cbc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00006.png deleted file mode 100644 index 9c1f1495..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00007.png deleted file mode 100644 index 09f6db4d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00008.png deleted file mode 100644 index b13ec60b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00009.png deleted file mode 100644 index 34e99c4c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00017.png deleted file mode 100644 index 16a9a0bf..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00021.png b/tests/snapshots/nanos/test_transaction_manifest/part54/00021.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part54/00021.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00000.png deleted file mode 100644 index cf0d6cbc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00006.png deleted file mode 100644 index 9c1f1495..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00007.png deleted file mode 100644 index 09f6db4d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00008.png deleted file mode 100644 index b13ec60b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00009.png deleted file mode 100644 index 34e99c4c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00020.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00023.png b/tests/snapshots/nanos/test_transaction_manifest/part55/00023.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part55/00023.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00000.png deleted file mode 100644 index cf0d6cbc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00006.png deleted file mode 100644 index 9c1f1495..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00007.png deleted file mode 100644 index 09f6db4d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00008.png deleted file mode 100644 index b13ec60b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00009.png deleted file mode 100644 index 34e99c4c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00016.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00016.png deleted file mode 100644 index c4c85af7..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00016.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00017.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00018.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00018.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00018.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00019.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00019.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00019.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00020.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00021.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00021.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00021.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00025.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00025.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00025.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00028.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00028.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00028.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part56/00029.png b/tests/snapshots/nanos/test_transaction_manifest/part56/00029.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part56/00029.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00000.png deleted file mode 100644 index cf0d6cbc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00004.png deleted file mode 100644 index 9432c6c1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00005.png deleted file mode 100644 index dc6dbe54..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00006.png deleted file mode 100644 index 9c1f1495..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00007.png deleted file mode 100644 index 09f6db4d..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00008.png deleted file mode 100644 index b13ec60b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00009.png deleted file mode 100644 index 34e99c4c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00010.png deleted file mode 100644 index a131269e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00011.png deleted file mode 100644 index 14379e5a..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00012.png deleted file mode 100644 index 8336c1b2..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00013.png deleted file mode 100644 index d8f24150..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00014.png deleted file mode 100644 index 8829fa90..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00015.png deleted file mode 100644 index a2fd3cde..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00016.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00016.png deleted file mode 100644 index c4c85af7..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00016.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00017.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00018.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00018.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00018.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00019.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00019.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00019.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00020.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00020.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00020.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00021.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00021.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00021.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00022.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00022.png deleted file mode 100644 index ea09ceef..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00022.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00023.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00023.png deleted file mode 100644 index 6f2dec3f..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00023.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00024.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00024.png deleted file mode 100644 index e2b9709e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00024.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00025.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00025.png deleted file mode 100644 index eb37414c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00025.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00026.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00026.png deleted file mode 100644 index ad854afc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00026.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00027.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00027.png deleted file mode 100644 index ef575b29..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00027.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00028.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00028.png deleted file mode 100644 index ab2df447..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00028.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00029.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00029.png deleted file mode 100644 index e85c2e71..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00029.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00030.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00030.png deleted file mode 100644 index 052c4e24..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00030.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00031.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00031.png deleted file mode 100644 index 99c7be6c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00031.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00035.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00035.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00035.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00038.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00038.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00038.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part57/00039.png b/tests/snapshots/nanos/test_transaction_manifest/part57/00039.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part57/00039.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part58/00000.png deleted file mode 100644 index 3cfd0dba..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part58/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part58/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part58/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part58/00007.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part58/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part58/00010.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part58/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part58/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part58/00011.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part58/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00000.png deleted file mode 100644 index 3cfd0dba..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00004.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00005.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00006.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00007.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00008.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00012.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00015.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part59/00016.png b/tests/snapshots/nanos/test_transaction_manifest/part59/00016.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part59/00016.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part6/00000.png deleted file mode 100644 index 5a368813..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part6/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part6/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part6/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part6/00006.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part6/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part6/00009.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part6/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part6/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part6/00010.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part6/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00000.png deleted file mode 100644 index 3cfd0dba..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00004.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00004.png deleted file mode 100644 index 6b7a3271..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00005.png deleted file mode 100644 index f305d3f1..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00006.png deleted file mode 100644 index 59e89348..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00007.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00007.png deleted file mode 100644 index 8646a805..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00007.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00008.png deleted file mode 100644 index c7579323..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00009.png deleted file mode 100644 index ea09ceef..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00010.png deleted file mode 100644 index 6f2dec3f..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00011.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00011.png deleted file mode 100644 index e2b9709e..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00011.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00012.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00012.png deleted file mode 100644 index eb37414c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00012.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00013.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00013.png deleted file mode 100644 index ad854afc..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00013.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00014.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00014.png deleted file mode 100644 index ef575b29..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00014.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00015.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00015.png deleted file mode 100644 index ab2df447..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00015.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00016.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00016.png deleted file mode 100644 index e85c2e71..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00016.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00017.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00017.png deleted file mode 100644 index 052c4e24..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00017.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00018.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00018.png deleted file mode 100644 index 99c7be6c..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00018.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00022.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00022.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00022.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00025.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00025.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00025.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part60/00026.png b/tests/snapshots/nanos/test_transaction_manifest/part60/00026.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part60/00026.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part7/00000.png deleted file mode 100644 index bafdde45..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part7/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part7/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part7/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part7/00006.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part7/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part7/00009.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part7/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part7/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part7/00010.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part7/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part8/00000.png deleted file mode 100644 index c602c383..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part8/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part8/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part8/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00005.png b/tests/snapshots/nanos/test_transaction_manifest/part8/00005.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part8/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00008.png b/tests/snapshots/nanos/test_transaction_manifest/part8/00008.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part8/00008.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part8/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part8/00009.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part8/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00000.png b/tests/snapshots/nanos/test_transaction_manifest/part9/00000.png deleted file mode 100644 index f56d33d8..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part9/00000.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00001.png b/tests/snapshots/nanos/test_transaction_manifest/part9/00001.png deleted file mode 100644 index 2ab14840..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part9/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00006.png b/tests/snapshots/nanos/test_transaction_manifest/part9/00006.png deleted file mode 100644 index 41b0ce2b..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part9/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00009.png b/tests/snapshots/nanos/test_transaction_manifest/part9/00009.png deleted file mode 100644 index 55ce7183..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part9/00009.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part9/00010.png b/tests/snapshots/nanos/test_transaction_manifest/part9/00010.png deleted file mode 100644 index c4016375..00000000 Binary files a/tests/snapshots/nanos/test_transaction_manifest/part9/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00000.png b/tests/snapshots/nanos/test_transaction_params/part1/00000.png index b338763e..a91c2dbb 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00000.png and b/tests/snapshots/nanos/test_transaction_params/part1/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00001.png b/tests/snapshots/nanos/test_transaction_params/part1/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00001.png and b/tests/snapshots/nanos/test_transaction_params/part1/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00002.png b/tests/snapshots/nanos/test_transaction_params/part1/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00002.png and b/tests/snapshots/nanos/test_transaction_params/part1/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00003.png b/tests/snapshots/nanos/test_transaction_params/part1/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00003.png and b/tests/snapshots/nanos/test_transaction_params/part1/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00004.png b/tests/snapshots/nanos/test_transaction_params/part1/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00004.png and b/tests/snapshots/nanos/test_transaction_params/part1/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00005.png b/tests/snapshots/nanos/test_transaction_params/part1/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00005.png and b/tests/snapshots/nanos/test_transaction_params/part1/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00006.png b/tests/snapshots/nanos/test_transaction_params/part1/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00006.png and b/tests/snapshots/nanos/test_transaction_params/part1/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00007.png b/tests/snapshots/nanos/test_transaction_params/part1/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00007.png and b/tests/snapshots/nanos/test_transaction_params/part1/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00008.png b/tests/snapshots/nanos/test_transaction_params/part1/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00008.png and b/tests/snapshots/nanos/test_transaction_params/part1/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00009.png b/tests/snapshots/nanos/test_transaction_params/part1/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00009.png and b/tests/snapshots/nanos/test_transaction_params/part1/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00010.png b/tests/snapshots/nanos/test_transaction_params/part1/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00010.png and b/tests/snapshots/nanos/test_transaction_params/part1/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00011.png b/tests/snapshots/nanos/test_transaction_params/part1/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00011.png and b/tests/snapshots/nanos/test_transaction_params/part1/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00012.png b/tests/snapshots/nanos/test_transaction_params/part1/00012.png index 52b06db9..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00012.png and b/tests/snapshots/nanos/test_transaction_params/part1/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00013.png b/tests/snapshots/nanos/test_transaction_params/part1/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00013.png and b/tests/snapshots/nanos/test_transaction_params/part1/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00014.png b/tests/snapshots/nanos/test_transaction_params/part1/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part1/00014.png and b/tests/snapshots/nanos/test_transaction_params/part1/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00015.png b/tests/snapshots/nanos/test_transaction_params/part1/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part1/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00024.png b/tests/snapshots/nanos/test_transaction_params/part1/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00024.png rename to tests/snapshots/nanos/test_transaction_params/part1/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part22/00025.png b/tests/snapshots/nanos/test_transaction_params/part1/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part22/00025.png rename to tests/snapshots/nanos/test_transaction_params/part1/00017.png diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00018.png b/tests/snapshots/nanos/test_transaction_params/part1/00018.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part1/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00019.png b/tests/snapshots/nanos/test_transaction_params/part1/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part1/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part1/00020.png b/tests/snapshots/nanos/test_transaction_params/part1/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part1/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00000.png b/tests/snapshots/nanos/test_transaction_params/part10/00000.png index c74a291c..f3548e94 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00000.png and b/tests/snapshots/nanos/test_transaction_params/part10/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00001.png b/tests/snapshots/nanos/test_transaction_params/part10/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00001.png and b/tests/snapshots/nanos/test_transaction_params/part10/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00002.png b/tests/snapshots/nanos/test_transaction_params/part10/00002.png index a81e22c9..279ad0e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00002.png and b/tests/snapshots/nanos/test_transaction_params/part10/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00003.png b/tests/snapshots/nanos/test_transaction_params/part10/00003.png index ef5b5adf..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00003.png and b/tests/snapshots/nanos/test_transaction_params/part10/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00004.png b/tests/snapshots/nanos/test_transaction_params/part10/00004.png index efd68843..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00004.png and b/tests/snapshots/nanos/test_transaction_params/part10/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00005.png b/tests/snapshots/nanos/test_transaction_params/part10/00005.png index 4e9626ae..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00005.png and b/tests/snapshots/nanos/test_transaction_params/part10/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00006.png b/tests/snapshots/nanos/test_transaction_params/part10/00006.png index 307a8ec4..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00006.png and b/tests/snapshots/nanos/test_transaction_params/part10/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00007.png b/tests/snapshots/nanos/test_transaction_params/part10/00007.png index 05f27c3a..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00007.png and b/tests/snapshots/nanos/test_transaction_params/part10/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00008.png b/tests/snapshots/nanos/test_transaction_params/part10/00008.png index 5ebc5665..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00008.png and b/tests/snapshots/nanos/test_transaction_params/part10/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00009.png b/tests/snapshots/nanos/test_transaction_params/part10/00009.png index f39812e8..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00009.png and b/tests/snapshots/nanos/test_transaction_params/part10/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00010.png b/tests/snapshots/nanos/test_transaction_params/part10/00010.png index 59aa8dce..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00010.png and b/tests/snapshots/nanos/test_transaction_params/part10/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00011.png b/tests/snapshots/nanos/test_transaction_params/part10/00011.png index 44e7069e..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00011.png and b/tests/snapshots/nanos/test_transaction_params/part10/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00012.png b/tests/snapshots/nanos/test_transaction_params/part10/00012.png index 7a5610fa..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00012.png and b/tests/snapshots/nanos/test_transaction_params/part10/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part10/00013.png b/tests/snapshots/nanos/test_transaction_params/part10/00013.png index 6bcaeb70..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part10/00013.png and b/tests/snapshots/nanos/test_transaction_params/part10/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00000.png b/tests/snapshots/nanos/test_transaction_params/part11/00000.png index c74a291c..f3548e94 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00000.png and b/tests/snapshots/nanos/test_transaction_params/part11/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00001.png b/tests/snapshots/nanos/test_transaction_params/part11/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00001.png and b/tests/snapshots/nanos/test_transaction_params/part11/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00002.png b/tests/snapshots/nanos/test_transaction_params/part11/00002.png index a81e22c9..279ad0e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00002.png and b/tests/snapshots/nanos/test_transaction_params/part11/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00003.png b/tests/snapshots/nanos/test_transaction_params/part11/00003.png index ef5b5adf..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00003.png and b/tests/snapshots/nanos/test_transaction_params/part11/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00004.png b/tests/snapshots/nanos/test_transaction_params/part11/00004.png index efd68843..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00004.png and b/tests/snapshots/nanos/test_transaction_params/part11/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00005.png b/tests/snapshots/nanos/test_transaction_params/part11/00005.png index 4e9626ae..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00005.png and b/tests/snapshots/nanos/test_transaction_params/part11/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00006.png b/tests/snapshots/nanos/test_transaction_params/part11/00006.png index 307a8ec4..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00006.png and b/tests/snapshots/nanos/test_transaction_params/part11/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00007.png b/tests/snapshots/nanos/test_transaction_params/part11/00007.png index 05f27c3a..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00007.png and b/tests/snapshots/nanos/test_transaction_params/part11/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00008.png b/tests/snapshots/nanos/test_transaction_params/part11/00008.png index 5ebc5665..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00008.png and b/tests/snapshots/nanos/test_transaction_params/part11/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00009.png b/tests/snapshots/nanos/test_transaction_params/part11/00009.png index f39812e8..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00009.png and b/tests/snapshots/nanos/test_transaction_params/part11/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00010.png b/tests/snapshots/nanos/test_transaction_params/part11/00010.png index 59aa8dce..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00010.png and b/tests/snapshots/nanos/test_transaction_params/part11/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00011.png b/tests/snapshots/nanos/test_transaction_params/part11/00011.png index 44e7069e..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00011.png and b/tests/snapshots/nanos/test_transaction_params/part11/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00012.png b/tests/snapshots/nanos/test_transaction_params/part11/00012.png index 7a5610fa..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00012.png and b/tests/snapshots/nanos/test_transaction_params/part11/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part11/00013.png b/tests/snapshots/nanos/test_transaction_params/part11/00013.png index 6bcaeb70..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part11/00013.png and b/tests/snapshots/nanos/test_transaction_params/part11/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00000.png b/tests/snapshots/nanos/test_transaction_params/part12/00000.png index c74a291c..f3548e94 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00000.png and b/tests/snapshots/nanos/test_transaction_params/part12/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00001.png b/tests/snapshots/nanos/test_transaction_params/part12/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00001.png and b/tests/snapshots/nanos/test_transaction_params/part12/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00002.png b/tests/snapshots/nanos/test_transaction_params/part12/00002.png index a81e22c9..279ad0e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00002.png and b/tests/snapshots/nanos/test_transaction_params/part12/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00003.png b/tests/snapshots/nanos/test_transaction_params/part12/00003.png index ef5b5adf..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00003.png and b/tests/snapshots/nanos/test_transaction_params/part12/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00004.png b/tests/snapshots/nanos/test_transaction_params/part12/00004.png index efd68843..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00004.png and b/tests/snapshots/nanos/test_transaction_params/part12/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00005.png b/tests/snapshots/nanos/test_transaction_params/part12/00005.png index 4e9626ae..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00005.png and b/tests/snapshots/nanos/test_transaction_params/part12/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00006.png b/tests/snapshots/nanos/test_transaction_params/part12/00006.png index 307a8ec4..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00006.png and b/tests/snapshots/nanos/test_transaction_params/part12/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00007.png b/tests/snapshots/nanos/test_transaction_params/part12/00007.png index 05f27c3a..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00007.png and b/tests/snapshots/nanos/test_transaction_params/part12/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00008.png b/tests/snapshots/nanos/test_transaction_params/part12/00008.png index 5ebc5665..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00008.png and b/tests/snapshots/nanos/test_transaction_params/part12/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00009.png b/tests/snapshots/nanos/test_transaction_params/part12/00009.png index f39812e8..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00009.png and b/tests/snapshots/nanos/test_transaction_params/part12/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00010.png b/tests/snapshots/nanos/test_transaction_params/part12/00010.png index 59aa8dce..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00010.png and b/tests/snapshots/nanos/test_transaction_params/part12/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00011.png b/tests/snapshots/nanos/test_transaction_params/part12/00011.png index 44e7069e..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00011.png and b/tests/snapshots/nanos/test_transaction_params/part12/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00012.png b/tests/snapshots/nanos/test_transaction_params/part12/00012.png index 7a5610fa..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00012.png and b/tests/snapshots/nanos/test_transaction_params/part12/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part12/00013.png b/tests/snapshots/nanos/test_transaction_params/part12/00013.png index 6bcaeb70..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part12/00013.png and b/tests/snapshots/nanos/test_transaction_params/part12/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00000.png b/tests/snapshots/nanos/test_transaction_params/part2/00000.png index b338763e..a91c2dbb 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00000.png and b/tests/snapshots/nanos/test_transaction_params/part2/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00001.png b/tests/snapshots/nanos/test_transaction_params/part2/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00001.png and b/tests/snapshots/nanos/test_transaction_params/part2/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00002.png b/tests/snapshots/nanos/test_transaction_params/part2/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00002.png and b/tests/snapshots/nanos/test_transaction_params/part2/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00003.png b/tests/snapshots/nanos/test_transaction_params/part2/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00003.png and b/tests/snapshots/nanos/test_transaction_params/part2/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00004.png b/tests/snapshots/nanos/test_transaction_params/part2/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00004.png and b/tests/snapshots/nanos/test_transaction_params/part2/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00005.png b/tests/snapshots/nanos/test_transaction_params/part2/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00005.png and b/tests/snapshots/nanos/test_transaction_params/part2/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00006.png b/tests/snapshots/nanos/test_transaction_params/part2/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00006.png and b/tests/snapshots/nanos/test_transaction_params/part2/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00007.png b/tests/snapshots/nanos/test_transaction_params/part2/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00007.png and b/tests/snapshots/nanos/test_transaction_params/part2/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00008.png b/tests/snapshots/nanos/test_transaction_params/part2/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00008.png and b/tests/snapshots/nanos/test_transaction_params/part2/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00009.png b/tests/snapshots/nanos/test_transaction_params/part2/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00009.png and b/tests/snapshots/nanos/test_transaction_params/part2/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00010.png b/tests/snapshots/nanos/test_transaction_params/part2/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00010.png and b/tests/snapshots/nanos/test_transaction_params/part2/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00011.png b/tests/snapshots/nanos/test_transaction_params/part2/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00011.png and b/tests/snapshots/nanos/test_transaction_params/part2/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00012.png b/tests/snapshots/nanos/test_transaction_params/part2/00012.png index 52b06db9..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00012.png and b/tests/snapshots/nanos/test_transaction_params/part2/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00013.png b/tests/snapshots/nanos/test_transaction_params/part2/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00013.png and b/tests/snapshots/nanos/test_transaction_params/part2/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00014.png b/tests/snapshots/nanos/test_transaction_params/part2/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part2/00014.png and b/tests/snapshots/nanos/test_transaction_params/part2/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00015.png b/tests/snapshots/nanos/test_transaction_params/part2/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part2/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00023.png b/tests/snapshots/nanos/test_transaction_params/part2/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00023.png rename to tests/snapshots/nanos/test_transaction_params/part2/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part23/00024.png b/tests/snapshots/nanos/test_transaction_params/part2/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part23/00024.png rename to tests/snapshots/nanos/test_transaction_params/part2/00017.png diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00018.png b/tests/snapshots/nanos/test_transaction_params/part2/00018.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part2/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00019.png b/tests/snapshots/nanos/test_transaction_params/part2/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part2/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part2/00020.png b/tests/snapshots/nanos/test_transaction_params/part2/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part2/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00000.png b/tests/snapshots/nanos/test_transaction_params/part3/00000.png index b338763e..a91c2dbb 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00000.png and b/tests/snapshots/nanos/test_transaction_params/part3/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00001.png b/tests/snapshots/nanos/test_transaction_params/part3/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00001.png and b/tests/snapshots/nanos/test_transaction_params/part3/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00002.png b/tests/snapshots/nanos/test_transaction_params/part3/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00002.png and b/tests/snapshots/nanos/test_transaction_params/part3/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00003.png b/tests/snapshots/nanos/test_transaction_params/part3/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00003.png and b/tests/snapshots/nanos/test_transaction_params/part3/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00004.png b/tests/snapshots/nanos/test_transaction_params/part3/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00004.png and b/tests/snapshots/nanos/test_transaction_params/part3/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00005.png b/tests/snapshots/nanos/test_transaction_params/part3/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00005.png and b/tests/snapshots/nanos/test_transaction_params/part3/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00006.png b/tests/snapshots/nanos/test_transaction_params/part3/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00006.png and b/tests/snapshots/nanos/test_transaction_params/part3/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00007.png b/tests/snapshots/nanos/test_transaction_params/part3/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00007.png and b/tests/snapshots/nanos/test_transaction_params/part3/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00008.png b/tests/snapshots/nanos/test_transaction_params/part3/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00008.png and b/tests/snapshots/nanos/test_transaction_params/part3/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00009.png b/tests/snapshots/nanos/test_transaction_params/part3/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00009.png and b/tests/snapshots/nanos/test_transaction_params/part3/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00010.png b/tests/snapshots/nanos/test_transaction_params/part3/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00010.png and b/tests/snapshots/nanos/test_transaction_params/part3/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00011.png b/tests/snapshots/nanos/test_transaction_params/part3/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00011.png and b/tests/snapshots/nanos/test_transaction_params/part3/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00012.png b/tests/snapshots/nanos/test_transaction_params/part3/00012.png index 52b06db9..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00012.png and b/tests/snapshots/nanos/test_transaction_params/part3/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00013.png b/tests/snapshots/nanos/test_transaction_params/part3/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00013.png and b/tests/snapshots/nanos/test_transaction_params/part3/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00014.png b/tests/snapshots/nanos/test_transaction_params/part3/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part3/00014.png and b/tests/snapshots/nanos/test_transaction_params/part3/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00015.png b/tests/snapshots/nanos/test_transaction_params/part3/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part3/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00028.png b/tests/snapshots/nanos/test_transaction_params/part3/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00028.png rename to tests/snapshots/nanos/test_transaction_params/part3/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part24/00029.png b/tests/snapshots/nanos/test_transaction_params/part3/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part24/00029.png rename to tests/snapshots/nanos/test_transaction_params/part3/00017.png diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00018.png b/tests/snapshots/nanos/test_transaction_params/part3/00018.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part3/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00019.png b/tests/snapshots/nanos/test_transaction_params/part3/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part3/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part3/00020.png b/tests/snapshots/nanos/test_transaction_params/part3/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part3/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00000.png b/tests/snapshots/nanos/test_transaction_params/part4/00000.png index b338763e..a91c2dbb 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00000.png and b/tests/snapshots/nanos/test_transaction_params/part4/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00001.png b/tests/snapshots/nanos/test_transaction_params/part4/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00001.png and b/tests/snapshots/nanos/test_transaction_params/part4/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00002.png b/tests/snapshots/nanos/test_transaction_params/part4/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00002.png and b/tests/snapshots/nanos/test_transaction_params/part4/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00003.png b/tests/snapshots/nanos/test_transaction_params/part4/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00003.png and b/tests/snapshots/nanos/test_transaction_params/part4/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00004.png b/tests/snapshots/nanos/test_transaction_params/part4/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00004.png and b/tests/snapshots/nanos/test_transaction_params/part4/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00005.png b/tests/snapshots/nanos/test_transaction_params/part4/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00005.png and b/tests/snapshots/nanos/test_transaction_params/part4/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00006.png b/tests/snapshots/nanos/test_transaction_params/part4/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00006.png and b/tests/snapshots/nanos/test_transaction_params/part4/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00007.png b/tests/snapshots/nanos/test_transaction_params/part4/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00007.png and b/tests/snapshots/nanos/test_transaction_params/part4/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00008.png b/tests/snapshots/nanos/test_transaction_params/part4/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00008.png and b/tests/snapshots/nanos/test_transaction_params/part4/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00009.png b/tests/snapshots/nanos/test_transaction_params/part4/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00009.png and b/tests/snapshots/nanos/test_transaction_params/part4/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00010.png b/tests/snapshots/nanos/test_transaction_params/part4/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00010.png and b/tests/snapshots/nanos/test_transaction_params/part4/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00011.png b/tests/snapshots/nanos/test_transaction_params/part4/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00011.png and b/tests/snapshots/nanos/test_transaction_params/part4/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00012.png b/tests/snapshots/nanos/test_transaction_params/part4/00012.png index 52b06db9..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00012.png and b/tests/snapshots/nanos/test_transaction_params/part4/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00013.png b/tests/snapshots/nanos/test_transaction_params/part4/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00013.png and b/tests/snapshots/nanos/test_transaction_params/part4/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00014.png b/tests/snapshots/nanos/test_transaction_params/part4/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part4/00014.png and b/tests/snapshots/nanos/test_transaction_params/part4/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00015.png b/tests/snapshots/nanos/test_transaction_params/part4/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part4/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00038.png b/tests/snapshots/nanos/test_transaction_params/part4/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00038.png rename to tests/snapshots/nanos/test_transaction_params/part4/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part25/00039.png b/tests/snapshots/nanos/test_transaction_params/part4/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part25/00039.png rename to tests/snapshots/nanos/test_transaction_params/part4/00017.png diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00018.png b/tests/snapshots/nanos/test_transaction_params/part4/00018.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part4/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00019.png b/tests/snapshots/nanos/test_transaction_params/part4/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part4/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part4/00020.png b/tests/snapshots/nanos/test_transaction_params/part4/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_params/part4/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00000.png b/tests/snapshots/nanos/test_transaction_params/part5/00000.png index a91c2dbb..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00000.png and b/tests/snapshots/nanos/test_transaction_params/part5/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00001.png b/tests/snapshots/nanos/test_transaction_params/part5/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00001.png and b/tests/snapshots/nanos/test_transaction_params/part5/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00002.png b/tests/snapshots/nanos/test_transaction_params/part5/00002.png index c8413388..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00002.png and b/tests/snapshots/nanos/test_transaction_params/part5/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00003.png b/tests/snapshots/nanos/test_transaction_params/part5/00003.png index a4274bf8..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00003.png and b/tests/snapshots/nanos/test_transaction_params/part5/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00004.png b/tests/snapshots/nanos/test_transaction_params/part5/00004.png index f2b61148..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00004.png and b/tests/snapshots/nanos/test_transaction_params/part5/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00005.png b/tests/snapshots/nanos/test_transaction_params/part5/00005.png index 87ad3209..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00005.png and b/tests/snapshots/nanos/test_transaction_params/part5/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00006.png b/tests/snapshots/nanos/test_transaction_params/part5/00006.png index 4543c4cb..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00006.png and b/tests/snapshots/nanos/test_transaction_params/part5/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00007.png b/tests/snapshots/nanos/test_transaction_params/part5/00007.png index 133a2bef..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00007.png and b/tests/snapshots/nanos/test_transaction_params/part5/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00008.png b/tests/snapshots/nanos/test_transaction_params/part5/00008.png index bdb2b0a4..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00008.png and b/tests/snapshots/nanos/test_transaction_params/part5/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00009.png b/tests/snapshots/nanos/test_transaction_params/part5/00009.png index b4e8992e..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00009.png and b/tests/snapshots/nanos/test_transaction_params/part5/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00010.png b/tests/snapshots/nanos/test_transaction_params/part5/00010.png index a8c0686b..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00010.png and b/tests/snapshots/nanos/test_transaction_params/part5/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00011.png b/tests/snapshots/nanos/test_transaction_params/part5/00011.png index c5866631..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00011.png and b/tests/snapshots/nanos/test_transaction_params/part5/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00012.png b/tests/snapshots/nanos/test_transaction_params/part5/00012.png index 05f27c3a..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00012.png and b/tests/snapshots/nanos/test_transaction_params/part5/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00013.png b/tests/snapshots/nanos/test_transaction_params/part5/00013.png index 5ebc5665..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00013.png and b/tests/snapshots/nanos/test_transaction_params/part5/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00014.png b/tests/snapshots/nanos/test_transaction_params/part5/00014.png index f39812e8..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00014.png and b/tests/snapshots/nanos/test_transaction_params/part5/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00015.png b/tests/snapshots/nanos/test_transaction_params/part5/00015.png index 59aa8dce..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00015.png and b/tests/snapshots/nanos/test_transaction_params/part5/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00016.png b/tests/snapshots/nanos/test_transaction_params/part5/00016.png index 44e7069e..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00016.png and b/tests/snapshots/nanos/test_transaction_params/part5/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00017.png b/tests/snapshots/nanos/test_transaction_params/part5/00017.png index 7a5610fa..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00017.png and b/tests/snapshots/nanos/test_transaction_params/part5/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00018.png b/tests/snapshots/nanos/test_transaction_params/part5/00018.png index 6bcaeb70..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00018.png and b/tests/snapshots/nanos/test_transaction_params/part5/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00019.png b/tests/snapshots/nanos/test_transaction_params/part5/00019.png index b131bbe9..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00019.png and b/tests/snapshots/nanos/test_transaction_params/part5/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part5/00020.png b/tests/snapshots/nanos/test_transaction_params/part5/00020.png index 52b06db9..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part5/00020.png and b/tests/snapshots/nanos/test_transaction_params/part5/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00000.png b/tests/snapshots/nanos/test_transaction_params/part6/00000.png index a91c2dbb..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00000.png and b/tests/snapshots/nanos/test_transaction_params/part6/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00001.png b/tests/snapshots/nanos/test_transaction_params/part6/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00001.png and b/tests/snapshots/nanos/test_transaction_params/part6/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00002.png b/tests/snapshots/nanos/test_transaction_params/part6/00002.png index c8413388..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00002.png and b/tests/snapshots/nanos/test_transaction_params/part6/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00003.png b/tests/snapshots/nanos/test_transaction_params/part6/00003.png index a4274bf8..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00003.png and b/tests/snapshots/nanos/test_transaction_params/part6/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00004.png b/tests/snapshots/nanos/test_transaction_params/part6/00004.png index f2b61148..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00004.png and b/tests/snapshots/nanos/test_transaction_params/part6/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00005.png b/tests/snapshots/nanos/test_transaction_params/part6/00005.png index 87ad3209..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00005.png and b/tests/snapshots/nanos/test_transaction_params/part6/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00006.png b/tests/snapshots/nanos/test_transaction_params/part6/00006.png index 4543c4cb..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00006.png and b/tests/snapshots/nanos/test_transaction_params/part6/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00007.png b/tests/snapshots/nanos/test_transaction_params/part6/00007.png index 133a2bef..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00007.png and b/tests/snapshots/nanos/test_transaction_params/part6/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00008.png b/tests/snapshots/nanos/test_transaction_params/part6/00008.png index bdb2b0a4..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00008.png and b/tests/snapshots/nanos/test_transaction_params/part6/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00009.png b/tests/snapshots/nanos/test_transaction_params/part6/00009.png index b4e8992e..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00009.png and b/tests/snapshots/nanos/test_transaction_params/part6/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00010.png b/tests/snapshots/nanos/test_transaction_params/part6/00010.png index a8c0686b..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00010.png and b/tests/snapshots/nanos/test_transaction_params/part6/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00011.png b/tests/snapshots/nanos/test_transaction_params/part6/00011.png index c5866631..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00011.png and b/tests/snapshots/nanos/test_transaction_params/part6/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00012.png b/tests/snapshots/nanos/test_transaction_params/part6/00012.png index 05f27c3a..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00012.png and b/tests/snapshots/nanos/test_transaction_params/part6/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00013.png b/tests/snapshots/nanos/test_transaction_params/part6/00013.png index 5ebc5665..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00013.png and b/tests/snapshots/nanos/test_transaction_params/part6/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00014.png b/tests/snapshots/nanos/test_transaction_params/part6/00014.png index f39812e8..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00014.png and b/tests/snapshots/nanos/test_transaction_params/part6/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00015.png b/tests/snapshots/nanos/test_transaction_params/part6/00015.png index 59aa8dce..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00015.png and b/tests/snapshots/nanos/test_transaction_params/part6/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00016.png b/tests/snapshots/nanos/test_transaction_params/part6/00016.png index 44e7069e..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00016.png and b/tests/snapshots/nanos/test_transaction_params/part6/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00017.png b/tests/snapshots/nanos/test_transaction_params/part6/00017.png index 7a5610fa..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00017.png and b/tests/snapshots/nanos/test_transaction_params/part6/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00018.png b/tests/snapshots/nanos/test_transaction_params/part6/00018.png index 6bcaeb70..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00018.png and b/tests/snapshots/nanos/test_transaction_params/part6/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00019.png b/tests/snapshots/nanos/test_transaction_params/part6/00019.png index b131bbe9..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00019.png and b/tests/snapshots/nanos/test_transaction_params/part6/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part6/00020.png b/tests/snapshots/nanos/test_transaction_params/part6/00020.png index 52b06db9..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part6/00020.png and b/tests/snapshots/nanos/test_transaction_params/part6/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00000.png b/tests/snapshots/nanos/test_transaction_params/part7/00000.png index a91c2dbb..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00000.png and b/tests/snapshots/nanos/test_transaction_params/part7/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00001.png b/tests/snapshots/nanos/test_transaction_params/part7/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00001.png and b/tests/snapshots/nanos/test_transaction_params/part7/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00002.png b/tests/snapshots/nanos/test_transaction_params/part7/00002.png index c8413388..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00002.png and b/tests/snapshots/nanos/test_transaction_params/part7/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00003.png b/tests/snapshots/nanos/test_transaction_params/part7/00003.png index a4274bf8..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00003.png and b/tests/snapshots/nanos/test_transaction_params/part7/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00004.png b/tests/snapshots/nanos/test_transaction_params/part7/00004.png index f2b61148..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00004.png and b/tests/snapshots/nanos/test_transaction_params/part7/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00005.png b/tests/snapshots/nanos/test_transaction_params/part7/00005.png index 87ad3209..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00005.png and b/tests/snapshots/nanos/test_transaction_params/part7/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00006.png b/tests/snapshots/nanos/test_transaction_params/part7/00006.png index 4543c4cb..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00006.png and b/tests/snapshots/nanos/test_transaction_params/part7/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00007.png b/tests/snapshots/nanos/test_transaction_params/part7/00007.png index 133a2bef..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00007.png and b/tests/snapshots/nanos/test_transaction_params/part7/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00008.png b/tests/snapshots/nanos/test_transaction_params/part7/00008.png index bdb2b0a4..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00008.png and b/tests/snapshots/nanos/test_transaction_params/part7/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00009.png b/tests/snapshots/nanos/test_transaction_params/part7/00009.png index b4e8992e..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00009.png and b/tests/snapshots/nanos/test_transaction_params/part7/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00010.png b/tests/snapshots/nanos/test_transaction_params/part7/00010.png index a8c0686b..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00010.png and b/tests/snapshots/nanos/test_transaction_params/part7/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00011.png b/tests/snapshots/nanos/test_transaction_params/part7/00011.png index c5866631..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00011.png and b/tests/snapshots/nanos/test_transaction_params/part7/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00012.png b/tests/snapshots/nanos/test_transaction_params/part7/00012.png index 05f27c3a..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00012.png and b/tests/snapshots/nanos/test_transaction_params/part7/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00013.png b/tests/snapshots/nanos/test_transaction_params/part7/00013.png index 5ebc5665..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00013.png and b/tests/snapshots/nanos/test_transaction_params/part7/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00014.png b/tests/snapshots/nanos/test_transaction_params/part7/00014.png index f39812e8..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00014.png and b/tests/snapshots/nanos/test_transaction_params/part7/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00015.png b/tests/snapshots/nanos/test_transaction_params/part7/00015.png index 59aa8dce..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00015.png and b/tests/snapshots/nanos/test_transaction_params/part7/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00016.png b/tests/snapshots/nanos/test_transaction_params/part7/00016.png index 44e7069e..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00016.png and b/tests/snapshots/nanos/test_transaction_params/part7/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00017.png b/tests/snapshots/nanos/test_transaction_params/part7/00017.png index 7a5610fa..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00017.png and b/tests/snapshots/nanos/test_transaction_params/part7/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00018.png b/tests/snapshots/nanos/test_transaction_params/part7/00018.png index 6bcaeb70..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00018.png and b/tests/snapshots/nanos/test_transaction_params/part7/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00019.png b/tests/snapshots/nanos/test_transaction_params/part7/00019.png index b131bbe9..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00019.png and b/tests/snapshots/nanos/test_transaction_params/part7/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part7/00020.png b/tests/snapshots/nanos/test_transaction_params/part7/00020.png index 52b06db9..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part7/00020.png and b/tests/snapshots/nanos/test_transaction_params/part7/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00000.png b/tests/snapshots/nanos/test_transaction_params/part8/00000.png index a91c2dbb..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00000.png and b/tests/snapshots/nanos/test_transaction_params/part8/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00001.png b/tests/snapshots/nanos/test_transaction_params/part8/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00001.png and b/tests/snapshots/nanos/test_transaction_params/part8/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00002.png b/tests/snapshots/nanos/test_transaction_params/part8/00002.png index c8413388..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00002.png and b/tests/snapshots/nanos/test_transaction_params/part8/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00003.png b/tests/snapshots/nanos/test_transaction_params/part8/00003.png index a4274bf8..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00003.png and b/tests/snapshots/nanos/test_transaction_params/part8/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00004.png b/tests/snapshots/nanos/test_transaction_params/part8/00004.png index f2b61148..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00004.png and b/tests/snapshots/nanos/test_transaction_params/part8/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00005.png b/tests/snapshots/nanos/test_transaction_params/part8/00005.png index 87ad3209..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00005.png and b/tests/snapshots/nanos/test_transaction_params/part8/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00006.png b/tests/snapshots/nanos/test_transaction_params/part8/00006.png index 4543c4cb..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00006.png and b/tests/snapshots/nanos/test_transaction_params/part8/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00007.png b/tests/snapshots/nanos/test_transaction_params/part8/00007.png index 133a2bef..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00007.png and b/tests/snapshots/nanos/test_transaction_params/part8/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00008.png b/tests/snapshots/nanos/test_transaction_params/part8/00008.png index bdb2b0a4..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00008.png and b/tests/snapshots/nanos/test_transaction_params/part8/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00009.png b/tests/snapshots/nanos/test_transaction_params/part8/00009.png index b4e8992e..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00009.png and b/tests/snapshots/nanos/test_transaction_params/part8/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00010.png b/tests/snapshots/nanos/test_transaction_params/part8/00010.png index a8c0686b..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00010.png and b/tests/snapshots/nanos/test_transaction_params/part8/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00011.png b/tests/snapshots/nanos/test_transaction_params/part8/00011.png index c5866631..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00011.png and b/tests/snapshots/nanos/test_transaction_params/part8/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00012.png b/tests/snapshots/nanos/test_transaction_params/part8/00012.png index 05f27c3a..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00012.png and b/tests/snapshots/nanos/test_transaction_params/part8/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00013.png b/tests/snapshots/nanos/test_transaction_params/part8/00013.png index 5ebc5665..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00013.png and b/tests/snapshots/nanos/test_transaction_params/part8/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00014.png b/tests/snapshots/nanos/test_transaction_params/part8/00014.png index f39812e8..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00014.png and b/tests/snapshots/nanos/test_transaction_params/part8/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00015.png b/tests/snapshots/nanos/test_transaction_params/part8/00015.png index 59aa8dce..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00015.png and b/tests/snapshots/nanos/test_transaction_params/part8/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00016.png b/tests/snapshots/nanos/test_transaction_params/part8/00016.png index 44e7069e..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00016.png and b/tests/snapshots/nanos/test_transaction_params/part8/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00017.png b/tests/snapshots/nanos/test_transaction_params/part8/00017.png index 7a5610fa..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00017.png and b/tests/snapshots/nanos/test_transaction_params/part8/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00018.png b/tests/snapshots/nanos/test_transaction_params/part8/00018.png index 6bcaeb70..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00018.png and b/tests/snapshots/nanos/test_transaction_params/part8/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00019.png b/tests/snapshots/nanos/test_transaction_params/part8/00019.png index b131bbe9..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00019.png and b/tests/snapshots/nanos/test_transaction_params/part8/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part8/00020.png b/tests/snapshots/nanos/test_transaction_params/part8/00020.png index 52b06db9..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part8/00020.png and b/tests/snapshots/nanos/test_transaction_params/part8/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00000.png b/tests/snapshots/nanos/test_transaction_params/part9/00000.png index c74a291c..f3548e94 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00000.png and b/tests/snapshots/nanos/test_transaction_params/part9/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00001.png b/tests/snapshots/nanos/test_transaction_params/part9/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00001.png and b/tests/snapshots/nanos/test_transaction_params/part9/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00002.png b/tests/snapshots/nanos/test_transaction_params/part9/00002.png index a81e22c9..279ad0e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00002.png and b/tests/snapshots/nanos/test_transaction_params/part9/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00003.png b/tests/snapshots/nanos/test_transaction_params/part9/00003.png index ef5b5adf..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00003.png and b/tests/snapshots/nanos/test_transaction_params/part9/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00004.png b/tests/snapshots/nanos/test_transaction_params/part9/00004.png index efd68843..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00004.png and b/tests/snapshots/nanos/test_transaction_params/part9/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00005.png b/tests/snapshots/nanos/test_transaction_params/part9/00005.png index 4e9626ae..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00005.png and b/tests/snapshots/nanos/test_transaction_params/part9/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00006.png b/tests/snapshots/nanos/test_transaction_params/part9/00006.png index 307a8ec4..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00006.png and b/tests/snapshots/nanos/test_transaction_params/part9/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00007.png b/tests/snapshots/nanos/test_transaction_params/part9/00007.png index 05f27c3a..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00007.png and b/tests/snapshots/nanos/test_transaction_params/part9/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00008.png b/tests/snapshots/nanos/test_transaction_params/part9/00008.png index 5ebc5665..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00008.png and b/tests/snapshots/nanos/test_transaction_params/part9/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00009.png b/tests/snapshots/nanos/test_transaction_params/part9/00009.png index f39812e8..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00009.png and b/tests/snapshots/nanos/test_transaction_params/part9/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00010.png b/tests/snapshots/nanos/test_transaction_params/part9/00010.png index 59aa8dce..c4016375 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00010.png and b/tests/snapshots/nanos/test_transaction_params/part9/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00011.png b/tests/snapshots/nanos/test_transaction_params/part9/00011.png index 44e7069e..52b06db9 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00011.png and b/tests/snapshots/nanos/test_transaction_params/part9/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00012.png b/tests/snapshots/nanos/test_transaction_params/part9/00012.png index 7a5610fa..006c26ab 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00012.png and b/tests/snapshots/nanos/test_transaction_params/part9/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_params/part9/00013.png b/tests/snapshots/nanos/test_transaction_params/part9/00013.png index 6bcaeb70..7f6ab5e6 100644 Binary files a/tests/snapshots/nanos/test_transaction_params/part9/00013.png and b/tests/snapshots/nanos/test_transaction_params/part9/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00000.png b/tests/snapshots/nanos/test_transaction_refused/00000.png index b338763e..a91c2dbb 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00000.png and b/tests/snapshots/nanos/test_transaction_refused/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00001.png b/tests/snapshots/nanos/test_transaction_refused/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00001.png and b/tests/snapshots/nanos/test_transaction_refused/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00002.png b/tests/snapshots/nanos/test_transaction_refused/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00002.png and b/tests/snapshots/nanos/test_transaction_refused/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00003.png b/tests/snapshots/nanos/test_transaction_refused/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00003.png and b/tests/snapshots/nanos/test_transaction_refused/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00004.png b/tests/snapshots/nanos/test_transaction_refused/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00004.png and b/tests/snapshots/nanos/test_transaction_refused/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00005.png b/tests/snapshots/nanos/test_transaction_refused/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00005.png and b/tests/snapshots/nanos/test_transaction_refused/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00006.png b/tests/snapshots/nanos/test_transaction_refused/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00006.png and b/tests/snapshots/nanos/test_transaction_refused/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00007.png b/tests/snapshots/nanos/test_transaction_refused/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00007.png and b/tests/snapshots/nanos/test_transaction_refused/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00008.png b/tests/snapshots/nanos/test_transaction_refused/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00008.png and b/tests/snapshots/nanos/test_transaction_refused/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00009.png b/tests/snapshots/nanos/test_transaction_refused/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00009.png and b/tests/snapshots/nanos/test_transaction_refused/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00010.png b/tests/snapshots/nanos/test_transaction_refused/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00010.png and b/tests/snapshots/nanos/test_transaction_refused/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00011.png b/tests/snapshots/nanos/test_transaction_refused/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00011.png and b/tests/snapshots/nanos/test_transaction_refused/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00012.png b/tests/snapshots/nanos/test_transaction_refused/00012.png index 52b06db9..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00012.png and b/tests/snapshots/nanos/test_transaction_refused/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00013.png b/tests/snapshots/nanos/test_transaction_refused/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00013.png and b/tests/snapshots/nanos/test_transaction_refused/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00014.png b/tests/snapshots/nanos/test_transaction_refused/00014.png index ef76636e..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00014.png and b/tests/snapshots/nanos/test_transaction_refused/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00015.png b/tests/snapshots/nanos/test_transaction_refused/00015.png index 7f6ab5e6..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_refused/00015.png and b/tests/snapshots/nanos/test_transaction_refused/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00025.png b/tests/snapshots/nanos/test_transaction_refused/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00025.png rename to tests/snapshots/nanos/test_transaction_refused/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part28/00026.png b/tests/snapshots/nanos/test_transaction_refused/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part28/00026.png rename to tests/snapshots/nanos/test_transaction_refused/00017.png diff --git a/tests/snapshots/nanos/test_transaction_refused/00018.png b/tests/snapshots/nanos/test_transaction_refused/00018.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_refused/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00019.png b/tests/snapshots/nanos/test_transaction_refused/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_refused/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00020.png b/tests/snapshots/nanos/test_transaction_refused/00020.png new file mode 100644 index 00000000..ef76636e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_refused/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_refused/00021.png b/tests/snapshots/nanos/test_transaction_refused/00021.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_refused/00021.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00000.png b/tests/snapshots/nanos/test_transaction_slot/part0/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00001.png b/tests/snapshots/nanos/test_transaction_slot/part0/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00001.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00002.png b/tests/snapshots/nanos/test_transaction_slot/part0/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00003.png b/tests/snapshots/nanos/test_transaction_slot/part0/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00004.png b/tests/snapshots/nanos/test_transaction_slot/part0/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00005.png b/tests/snapshots/nanos/test_transaction_slot/part0/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00006.png b/tests/snapshots/nanos/test_transaction_slot/part0/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00007.png b/tests/snapshots/nanos/test_transaction_slot/part0/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00008.png b/tests/snapshots/nanos/test_transaction_slot/part0/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00009.png b/tests/snapshots/nanos/test_transaction_slot/part0/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00010.png b/tests/snapshots/nanos/test_transaction_slot/part0/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00011.png b/tests/snapshots/nanos/test_transaction_slot/part0/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00012.png b/tests/snapshots/nanos/test_transaction_slot/part0/00012.png index 52b06db9..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00013.png b/tests/snapshots/nanos/test_transaction_slot/part0/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00014.png b/tests/snapshots/nanos/test_transaction_slot/part0/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part0/00014.png and b/tests/snapshots/nanos/test_transaction_slot/part0/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00015.png b/tests/snapshots/nanos/test_transaction_slot/part0/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part0/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00023.png b/tests/snapshots/nanos/test_transaction_slot/part0/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00023.png rename to tests/snapshots/nanos/test_transaction_slot/part0/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part3/00024.png b/tests/snapshots/nanos/test_transaction_slot/part0/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part3/00024.png rename to tests/snapshots/nanos/test_transaction_slot/part0/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00018.png b/tests/snapshots/nanos/test_transaction_slot/part0/00018.png new file mode 100644 index 00000000..52b06db9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part0/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00019.png b/tests/snapshots/nanos/test_transaction_slot/part0/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part0/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part0/00020.png b/tests/snapshots/nanos/test_transaction_slot/part0/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part0/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00000.png b/tests/snapshots/nanos/test_transaction_slot/part10/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00002.png b/tests/snapshots/nanos/test_transaction_slot/part10/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00003.png b/tests/snapshots/nanos/test_transaction_slot/part10/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00004.png b/tests/snapshots/nanos/test_transaction_slot/part10/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00005.png b/tests/snapshots/nanos/test_transaction_slot/part10/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00006.png b/tests/snapshots/nanos/test_transaction_slot/part10/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00007.png b/tests/snapshots/nanos/test_transaction_slot/part10/00007.png index 420d6421..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00008.png b/tests/snapshots/nanos/test_transaction_slot/part10/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00009.png b/tests/snapshots/nanos/test_transaction_slot/part10/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00010.png b/tests/snapshots/nanos/test_transaction_slot/part10/00010.png index 7a8ccecc..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00011.png b/tests/snapshots/nanos/test_transaction_slot/part10/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00012.png b/tests/snapshots/nanos/test_transaction_slot/part10/00012.png index 006c26ab..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00013.png b/tests/snapshots/nanos/test_transaction_slot/part10/00013.png index 7f6ab5e6..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part10/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part10/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00014.png b/tests/snapshots/nanos/test_transaction_slot/part10/00014.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part10/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00015.png b/tests/snapshots/nanos/test_transaction_slot/part10/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part10/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00008.png b/tests/snapshots/nanos/test_transaction_slot/part10/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00008.png rename to tests/snapshots/nanos/test_transaction_slot/part10/00016.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00017.png b/tests/snapshots/nanos/test_transaction_slot/part10/00017.png new file mode 100644 index 00000000..b131bbe9 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part10/00017.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00018.png b/tests/snapshots/nanos/test_transaction_slot/part10/00018.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part10/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part10/00019.png b/tests/snapshots/nanos/test_transaction_slot/part10/00019.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part10/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00000.png b/tests/snapshots/nanos/test_transaction_slot/part12/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00002.png b/tests/snapshots/nanos/test_transaction_slot/part12/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00003.png b/tests/snapshots/nanos/test_transaction_slot/part12/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00004.png b/tests/snapshots/nanos/test_transaction_slot/part12/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00005.png b/tests/snapshots/nanos/test_transaction_slot/part12/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00006.png b/tests/snapshots/nanos/test_transaction_slot/part12/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00007.png b/tests/snapshots/nanos/test_transaction_slot/part12/00007.png index 420d6421..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00008.png b/tests/snapshots/nanos/test_transaction_slot/part12/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00009.png b/tests/snapshots/nanos/test_transaction_slot/part12/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00010.png b/tests/snapshots/nanos/test_transaction_slot/part12/00010.png index 7a8ccecc..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00011.png b/tests/snapshots/nanos/test_transaction_slot/part12/00011.png index e8c1b25f..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00012.png b/tests/snapshots/nanos/test_transaction_slot/part12/00012.png index 6e23e7ce..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00013.png b/tests/snapshots/nanos/test_transaction_slot/part12/00013.png index 9a07dbc0..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00014.png b/tests/snapshots/nanos/test_transaction_slot/part12/00014.png index a9a71987..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00014.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00015.png b/tests/snapshots/nanos/test_transaction_slot/part12/00015.png index 006c26ab..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00015.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00016.png b/tests/snapshots/nanos/test_transaction_slot/part12/00016.png index 7f6ab5e6..55ce7183 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part12/00016.png and b/tests/snapshots/nanos/test_transaction_slot/part12/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part48/00009.png b/tests/snapshots/nanos/test_transaction_slot/part12/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part48/00009.png rename to tests/snapshots/nanos/test_transaction_slot/part12/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00018.png b/tests/snapshots/nanos/test_transaction_slot/part12/00018.png new file mode 100644 index 00000000..32ae184b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part12/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00019.png b/tests/snapshots/nanos/test_transaction_slot/part12/00019.png new file mode 100644 index 00000000..c8d1509b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part12/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00020.png b/tests/snapshots/nanos/test_transaction_slot/part12/00020.png new file mode 100644 index 00000000..a9a71987 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part12/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00021.png b/tests/snapshots/nanos/test_transaction_slot/part12/00021.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part12/00021.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part12/00022.png b/tests/snapshots/nanos/test_transaction_slot/part12/00022.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part12/00022.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00000.png b/tests/snapshots/nanos/test_transaction_slot/part14/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00002.png b/tests/snapshots/nanos/test_transaction_slot/part14/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00003.png b/tests/snapshots/nanos/test_transaction_slot/part14/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00004.png b/tests/snapshots/nanos/test_transaction_slot/part14/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00005.png b/tests/snapshots/nanos/test_transaction_slot/part14/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00006.png b/tests/snapshots/nanos/test_transaction_slot/part14/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00007.png b/tests/snapshots/nanos/test_transaction_slot/part14/00007.png index 420d6421..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00008.png b/tests/snapshots/nanos/test_transaction_slot/part14/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00009.png b/tests/snapshots/nanos/test_transaction_slot/part14/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00010.png b/tests/snapshots/nanos/test_transaction_slot/part14/00010.png index 7a8ccecc..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00011.png b/tests/snapshots/nanos/test_transaction_slot/part14/00011.png index e8c1b25f..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00012.png b/tests/snapshots/nanos/test_transaction_slot/part14/00012.png index 6e23e7ce..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00013.png b/tests/snapshots/nanos/test_transaction_slot/part14/00013.png index b300352b..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00014.png b/tests/snapshots/nanos/test_transaction_slot/part14/00014.png index 006c26ab..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00014.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00015.png b/tests/snapshots/nanos/test_transaction_slot/part14/00015.png index 7f6ab5e6..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part14/00015.png and b/tests/snapshots/nanos/test_transaction_slot/part14/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00009.png b/tests/snapshots/nanos/test_transaction_slot/part14/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00009.png rename to tests/snapshots/nanos/test_transaction_slot/part14/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part5/00010.png b/tests/snapshots/nanos/test_transaction_slot/part14/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part5/00010.png rename to tests/snapshots/nanos/test_transaction_slot/part14/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00018.png b/tests/snapshots/nanos/test_transaction_slot/part14/00018.png new file mode 100644 index 00000000..32ae184b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part14/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00019.png b/tests/snapshots/nanos/test_transaction_slot/part14/00019.png new file mode 100644 index 00000000..b300352b Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part14/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00020.png b/tests/snapshots/nanos/test_transaction_slot/part14/00020.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part14/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part14/00021.png b/tests/snapshots/nanos/test_transaction_slot/part14/00021.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part14/00021.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00000.png b/tests/snapshots/nanos/test_transaction_slot/part15/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00001.png b/tests/snapshots/nanos/test_transaction_slot/part15/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00001.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00002.png b/tests/snapshots/nanos/test_transaction_slot/part15/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00003.png b/tests/snapshots/nanos/test_transaction_slot/part15/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00004.png b/tests/snapshots/nanos/test_transaction_slot/part15/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00005.png b/tests/snapshots/nanos/test_transaction_slot/part15/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00006.png b/tests/snapshots/nanos/test_transaction_slot/part15/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00007.png b/tests/snapshots/nanos/test_transaction_slot/part15/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00008.png b/tests/snapshots/nanos/test_transaction_slot/part15/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00009.png b/tests/snapshots/nanos/test_transaction_slot/part15/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00010.png b/tests/snapshots/nanos/test_transaction_slot/part15/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00011.png b/tests/snapshots/nanos/test_transaction_slot/part15/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00012.png b/tests/snapshots/nanos/test_transaction_slot/part15/00012.png index f3477403..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00013.png b/tests/snapshots/nanos/test_transaction_slot/part15/00013.png index 33be6809..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00014.png b/tests/snapshots/nanos/test_transaction_slot/part15/00014.png index 006c26ab..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00014.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00015.png b/tests/snapshots/nanos/test_transaction_slot/part15/00015.png index 7f6ab5e6..7a5610fa 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part15/00015.png and b/tests/snapshots/nanos/test_transaction_slot/part15/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00008.png b/tests/snapshots/nanos/test_transaction_slot/part15/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00008.png rename to tests/snapshots/nanos/test_transaction_slot/part15/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part50/00009.png b/tests/snapshots/nanos/test_transaction_slot/part15/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part50/00009.png rename to tests/snapshots/nanos/test_transaction_slot/part15/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00018.png b/tests/snapshots/nanos/test_transaction_slot/part15/00018.png new file mode 100644 index 00000000..a9a71987 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part15/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00019.png b/tests/snapshots/nanos/test_transaction_slot/part15/00019.png new file mode 100644 index 00000000..f3477403 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part15/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00020.png b/tests/snapshots/nanos/test_transaction_slot/part15/00020.png new file mode 100644 index 00000000..33be6809 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part15/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00021.png b/tests/snapshots/nanos/test_transaction_slot/part15/00021.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part15/00021.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part15/00022.png b/tests/snapshots/nanos/test_transaction_slot/part15/00022.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part15/00022.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00000.png b/tests/snapshots/nanos/test_transaction_slot/part2/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00001.png b/tests/snapshots/nanos/test_transaction_slot/part2/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00001.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00002.png b/tests/snapshots/nanos/test_transaction_slot/part2/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00003.png b/tests/snapshots/nanos/test_transaction_slot/part2/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00004.png b/tests/snapshots/nanos/test_transaction_slot/part2/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00005.png b/tests/snapshots/nanos/test_transaction_slot/part2/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00006.png b/tests/snapshots/nanos/test_transaction_slot/part2/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00007.png b/tests/snapshots/nanos/test_transaction_slot/part2/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00008.png b/tests/snapshots/nanos/test_transaction_slot/part2/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00009.png b/tests/snapshots/nanos/test_transaction_slot/part2/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00010.png b/tests/snapshots/nanos/test_transaction_slot/part2/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00011.png b/tests/snapshots/nanos/test_transaction_slot/part2/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00012.png b/tests/snapshots/nanos/test_transaction_slot/part2/00012.png index 53826054..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00013.png b/tests/snapshots/nanos/test_transaction_slot/part2/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00014.png b/tests/snapshots/nanos/test_transaction_slot/part2/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part2/00014.png and b/tests/snapshots/nanos/test_transaction_slot/part2/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00015.png b/tests/snapshots/nanos/test_transaction_slot/part2/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part2/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00010.png b/tests/snapshots/nanos/test_transaction_slot/part2/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00010.png rename to tests/snapshots/nanos/test_transaction_slot/part2/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part51/00011.png b/tests/snapshots/nanos/test_transaction_slot/part2/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part51/00011.png rename to tests/snapshots/nanos/test_transaction_slot/part2/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00018.png b/tests/snapshots/nanos/test_transaction_slot/part2/00018.png new file mode 100644 index 00000000..53826054 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part2/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00019.png b/tests/snapshots/nanos/test_transaction_slot/part2/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part2/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part2/00020.png b/tests/snapshots/nanos/test_transaction_slot/part2/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part2/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00000.png b/tests/snapshots/nanos/test_transaction_slot/part3/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00001.png b/tests/snapshots/nanos/test_transaction_slot/part3/00001.png index 4ffe73a4..2ab14840 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00001.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00001.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00002.png b/tests/snapshots/nanos/test_transaction_slot/part3/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00003.png b/tests/snapshots/nanos/test_transaction_slot/part3/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00004.png b/tests/snapshots/nanos/test_transaction_slot/part3/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00005.png b/tests/snapshots/nanos/test_transaction_slot/part3/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00006.png b/tests/snapshots/nanos/test_transaction_slot/part3/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00007.png b/tests/snapshots/nanos/test_transaction_slot/part3/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00008.png b/tests/snapshots/nanos/test_transaction_slot/part3/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00009.png b/tests/snapshots/nanos/test_transaction_slot/part3/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00010.png b/tests/snapshots/nanos/test_transaction_slot/part3/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00011.png b/tests/snapshots/nanos/test_transaction_slot/part3/00011.png index b131bbe9..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00012.png b/tests/snapshots/nanos/test_transaction_slot/part3/00012.png index 006c26ab..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00013.png b/tests/snapshots/nanos/test_transaction_slot/part3/00013.png index 7f6ab5e6..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part3/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part3/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00014.png b/tests/snapshots/nanos/test_transaction_slot/part3/00014.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part3/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00015.png b/tests/snapshots/nanos/test_transaction_slot/part3/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part3/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00008.png b/tests/snapshots/nanos/test_transaction_slot/part3/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00008.png rename to tests/snapshots/nanos/test_transaction_slot/part3/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part52/00009.png b/tests/snapshots/nanos/test_transaction_slot/part3/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part52/00009.png rename to tests/snapshots/nanos/test_transaction_slot/part3/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00018.png b/tests/snapshots/nanos/test_transaction_slot/part3/00018.png new file mode 100644 index 00000000..a9a71987 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part3/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00019.png b/tests/snapshots/nanos/test_transaction_slot/part3/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part3/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part3/00020.png b/tests/snapshots/nanos/test_transaction_slot/part3/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part3/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00000.png b/tests/snapshots/nanos/test_transaction_slot/part4/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00002.png b/tests/snapshots/nanos/test_transaction_slot/part4/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00003.png b/tests/snapshots/nanos/test_transaction_slot/part4/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00004.png b/tests/snapshots/nanos/test_transaction_slot/part4/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00005.png b/tests/snapshots/nanos/test_transaction_slot/part4/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00006.png b/tests/snapshots/nanos/test_transaction_slot/part4/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00007.png b/tests/snapshots/nanos/test_transaction_slot/part4/00007.png index 420d6421..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00008.png b/tests/snapshots/nanos/test_transaction_slot/part4/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00009.png b/tests/snapshots/nanos/test_transaction_slot/part4/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00010.png b/tests/snapshots/nanos/test_transaction_slot/part4/00010.png index 7a8ccecc..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00011.png b/tests/snapshots/nanos/test_transaction_slot/part4/00011.png index e8c1b25f..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00012.png b/tests/snapshots/nanos/test_transaction_slot/part4/00012.png index a9a71987..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00013.png b/tests/snapshots/nanos/test_transaction_slot/part4/00013.png index 006c26ab..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00014.png b/tests/snapshots/nanos/test_transaction_slot/part4/00014.png index 7f6ab5e6..44e7069e 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part4/00014.png and b/tests/snapshots/nanos/test_transaction_slot/part4/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00015.png b/tests/snapshots/nanos/test_transaction_slot/part4/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part4/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00010.png b/tests/snapshots/nanos/test_transaction_slot/part4/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00010.png rename to tests/snapshots/nanos/test_transaction_slot/part4/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part53/00011.png b/tests/snapshots/nanos/test_transaction_slot/part4/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part53/00011.png rename to tests/snapshots/nanos/test_transaction_slot/part4/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00018.png b/tests/snapshots/nanos/test_transaction_slot/part4/00018.png new file mode 100644 index 00000000..a9a71987 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part4/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00019.png b/tests/snapshots/nanos/test_transaction_slot/part4/00019.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part4/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part4/00020.png b/tests/snapshots/nanos/test_transaction_slot/part4/00020.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part4/00020.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00000.png b/tests/snapshots/nanos/test_transaction_slot/part6/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00002.png b/tests/snapshots/nanos/test_transaction_slot/part6/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00003.png b/tests/snapshots/nanos/test_transaction_slot/part6/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00004.png b/tests/snapshots/nanos/test_transaction_slot/part6/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00005.png b/tests/snapshots/nanos/test_transaction_slot/part6/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00006.png b/tests/snapshots/nanos/test_transaction_slot/part6/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00007.png b/tests/snapshots/nanos/test_transaction_slot/part6/00007.png index 420d6421..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00008.png b/tests/snapshots/nanos/test_transaction_slot/part6/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00009.png b/tests/snapshots/nanos/test_transaction_slot/part6/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00010.png b/tests/snapshots/nanos/test_transaction_slot/part6/00010.png index 6bcaeb70..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00011.png b/tests/snapshots/nanos/test_transaction_slot/part6/00011.png index e8c1b25f..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00012.png b/tests/snapshots/nanos/test_transaction_slot/part6/00012.png index 006c26ab..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00013.png b/tests/snapshots/nanos/test_transaction_slot/part6/00013.png index 7f6ab5e6..41b0ce2b 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part6/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part6/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00014.png b/tests/snapshots/nanos/test_transaction_slot/part6/00014.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part6/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00015.png b/tests/snapshots/nanos/test_transaction_slot/part6/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part6/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00016.png b/tests/snapshots/nanos/test_transaction_slot/part6/00016.png new file mode 100644 index 00000000..6bcaeb70 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part6/00016.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00025.png b/tests/snapshots/nanos/test_transaction_slot/part6/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00025.png rename to tests/snapshots/nanos/test_transaction_slot/part6/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00018.png b/tests/snapshots/nanos/test_transaction_slot/part6/00018.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part6/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part6/00019.png b/tests/snapshots/nanos/test_transaction_slot/part6/00019.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part6/00019.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00000.png b/tests/snapshots/nanos/test_transaction_slot/part8/00000.png index b338763e..3b57cb27 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00000.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00000.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00002.png b/tests/snapshots/nanos/test_transaction_slot/part8/00002.png index 1556d048..b37540ce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00002.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00002.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00003.png b/tests/snapshots/nanos/test_transaction_slot/part8/00003.png index 6e60758e..db6a7d25 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00003.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00003.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00004.png b/tests/snapshots/nanos/test_transaction_slot/part8/00004.png index 05f27c3a..83d83228 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00004.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00004.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00005.png b/tests/snapshots/nanos/test_transaction_slot/part8/00005.png index 5ebc5665..5a8a3fe7 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00005.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00005.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00006.png b/tests/snapshots/nanos/test_transaction_slot/part8/00006.png index f39812e8..2fcbfd21 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00006.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00006.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00007.png b/tests/snapshots/nanos/test_transaction_slot/part8/00007.png index 59aa8dce..8cf8ba28 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00007.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00007.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00008.png b/tests/snapshots/nanos/test_transaction_slot/part8/00008.png index 44e7069e..16c4f3e4 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00008.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00008.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00009.png b/tests/snapshots/nanos/test_transaction_slot/part8/00009.png index 7a5610fa..aca36545 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00009.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00009.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00010.png b/tests/snapshots/nanos/test_transaction_slot/part8/00010.png index 7a8ccecc..05f27c3a 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00010.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00010.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00011.png b/tests/snapshots/nanos/test_transaction_slot/part8/00011.png index e8c1b25f..5ebc5665 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00011.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00011.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00012.png b/tests/snapshots/nanos/test_transaction_slot/part8/00012.png index 006c26ab..f39812e8 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00012.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00012.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00013.png b/tests/snapshots/nanos/test_transaction_slot/part8/00013.png index 7f6ab5e6..59aa8dce 100644 Binary files a/tests/snapshots/nanos/test_transaction_slot/part8/00013.png and b/tests/snapshots/nanos/test_transaction_slot/part8/00013.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00014.png b/tests/snapshots/nanos/test_transaction_slot/part8/00014.png new file mode 100644 index 00000000..44e7069e Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part8/00014.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00015.png b/tests/snapshots/nanos/test_transaction_slot/part8/00015.png new file mode 100644 index 00000000..7a5610fa Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part8/00015.png differ diff --git a/tests/snapshots/nanos/test_transaction_manifest/part54/00024.png b/tests/snapshots/nanos/test_transaction_slot/part8/00016.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part54/00024.png rename to tests/snapshots/nanos/test_transaction_slot/part8/00016.png diff --git a/tests/snapshots/nanos/test_transaction_manifest/part55/00024.png b/tests/snapshots/nanos/test_transaction_slot/part8/00017.png similarity index 100% rename from tests/snapshots/nanos/test_transaction_manifest/part55/00024.png rename to tests/snapshots/nanos/test_transaction_slot/part8/00017.png diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00018.png b/tests/snapshots/nanos/test_transaction_slot/part8/00018.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part8/00018.png differ diff --git a/tests/snapshots/nanos/test_transaction_slot/part8/00019.png b/tests/snapshots/nanos/test_transaction_slot/part8/00019.png new file mode 100644 index 00000000..7f6ab5e6 Binary files /dev/null and b/tests/snapshots/nanos/test_transaction_slot/part8/00019.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00001.png b/tests/snapshots/nanosp/test_app_mainmenu/00001.png index e10e0049..8472e5d9 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00001.png and b/tests/snapshots/nanosp/test_app_mainmenu/00001.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00000.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00000.png similarity index 100% rename from tests/snapshots/nanox/test_app_mainmenu/00000.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00000.png diff --git a/tests/snapshots/nanox/test_app_mainmenu/00001.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00001.png similarity index 100% rename from tests/snapshots/nanox/test_app_mainmenu/00001.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00001.png diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part0/00002.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00002.png new file mode 100644 index 00000000..e744535f Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part0/00003.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00003.png new file mode 100644 index 00000000..f167b041 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00004.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00004.png similarity index 100% rename from tests/snapshots/nanox/test_app_mainmenu/00004.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00004.png diff --git a/tests/snapshots/nanox/test_app_mainmenu/00005.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00005.png similarity index 100% rename from tests/snapshots/nanox/test_app_mainmenu/00005.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00005.png diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part0/00006.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00006.png new file mode 100644 index 00000000..86e715d1 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part0/00006.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part0/00007.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00007.png new file mode 100644 index 00000000..f167b041 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part0/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00000.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00000.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00008.png diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part0/00009.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00009.png new file mode 100644 index 00000000..8f31a63d Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part0/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00013.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00013.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00014.png b/tests/snapshots/nanosp/test_app_mainmenu/part0/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00014.png rename to tests/snapshots/nanosp/test_app_mainmenu/part0/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00000.png b/tests/snapshots/nanosp/test_app_mainmenu/part1/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00000.png rename to tests/snapshots/nanosp/test_app_mainmenu/part1/00000.png diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part1/00001.png b/tests/snapshots/nanosp/test_app_mainmenu/part1/00001.png new file mode 100644 index 00000000..9ffae7e2 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part1/00002.png b/tests/snapshots/nanosp/test_app_mainmenu/part1/00002.png new file mode 100644 index 00000000..35778e58 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part1/00003.png b/tests/snapshots/nanosp/test_app_mainmenu/part1/00003.png new file mode 100644 index 00000000..402e770b Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part1/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00013.png b/tests/snapshots/nanosp/test_app_mainmenu/part1/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00013.png rename to tests/snapshots/nanosp/test_app_mainmenu/part1/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00014.png b/tests/snapshots/nanosp/test_app_mainmenu/part1/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00014.png rename to tests/snapshots/nanosp/test_app_mainmenu/part1/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00017.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00017.png rename to tests/snapshots/nanosp/test_app_mainmenu/part2/00000.png diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00001.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00002.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00002.png new file mode 100644 index 00000000..e744535f Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00002.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00003.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00003.png new file mode 100644 index 00000000..f167b041 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00000.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00000.png rename to tests/snapshots/nanosp/test_app_mainmenu/part2/00004.png diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00005.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00005.png new file mode 100644 index 00000000..6f0ef3bb Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00006.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00006.png new file mode 100644 index 00000000..c9a888e0 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00006.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00007.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00007.png new file mode 100644 index 00000000..cd1d5547 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00007.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00008.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00008.png new file mode 100644 index 00000000..57999c44 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00008.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00009.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00009.png new file mode 100644 index 00000000..155ba686 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00009.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/part2/00010.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00010.png new file mode 100644 index 00000000..9e771529 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/part2/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00016.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00016.png rename to tests/snapshots/nanosp/test_app_mainmenu/part2/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00016.png b/tests/snapshots/nanosp/test_app_mainmenu/part2/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00016.png rename to tests/snapshots/nanosp/test_app_mainmenu/part2/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00002.png new file mode 100644 index 00000000..f7921677 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part0/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00000.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00000.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00001.png new file mode 100644 index 00000000..eb38195b Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00002.png new file mode 100644 index 00000000..edfb974f Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00003.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00002.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00004.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00005.png new file mode 100644 index 00000000..75f661ea Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00005.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00006.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00007.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00008.png new file mode 100644 index 00000000..658d96bb Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00004.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00005.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00006.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00007.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00008.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00009.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00010.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00010.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00011.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00011.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00016.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00017.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00017.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00018.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00012.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00015.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00015.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00021.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00021.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00022.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00022.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00023.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00023.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00024.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00024.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00025.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00025.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00025.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00025.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00026.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00026.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00026.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00027.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00012.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00027.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00028.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00029.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part1/00029.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00000.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00000.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00001.png new file mode 100644 index 00000000..ab73ea7b Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00002.png new file mode 100644 index 00000000..ff86b93e Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00002.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00003.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00003.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00004.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00005.png new file mode 100644 index 00000000..75f661ea Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00006.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00007.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00008.png new file mode 100644 index 00000000..75fafce4 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00004.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00005.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00006.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00011.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00012.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00008.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00009.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00014.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00015.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00015.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00015.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00016.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00016.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00016.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00017.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00017.png new file mode 100644 index 00000000..94fa1038 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00018.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00012.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part2/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00000.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00000.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00001.png new file mode 100644 index 00000000..037f08ae Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00002.png new file mode 100644 index 00000000..cedaf45b Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00002.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00003.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00003.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00004.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00005.png new file mode 100644 index 00000000..57f45aba Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00005.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00006.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00007.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00008.png new file mode 100644 index 00000000..e6f1ce0f Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00008.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00009.png new file mode 100644 index 00000000..407e93cf Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00007.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00008.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00009.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00012.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00013.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00011.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00011.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00012.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00015.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00016.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00016.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00016.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00017.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00017.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00017.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00018.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00018.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00015.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00019.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00015.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part3/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00000.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00000.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00001.png new file mode 100644 index 00000000..d781cb30 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00002.png new file mode 100644 index 00000000..4d02204f Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00002.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00003.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00002.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00004.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00005.png new file mode 100644 index 00000000..57f45aba Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00005.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00006.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00007.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00008.png new file mode 100644 index 00000000..2e7a9c02 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00008.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00009.png new file mode 100644 index 00000000..407e93cf Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00006.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00007.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00008.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00007.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00010.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00010.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00011.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00011.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00010.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00010.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00011.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00011.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00017.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00018.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00018.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00019.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part4/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00000.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00000.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00001.png new file mode 100644 index 00000000..1d53f522 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00002.png new file mode 100644 index 00000000..18153639 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00002.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00003.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00003.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00004.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00005.png new file mode 100644 index 00000000..d1a71de0 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00005.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00006.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00007.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00008.png new file mode 100644 index 00000000..7e0fbecb Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00008.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00009.png new file mode 100644 index 00000000..2d840c0e Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00009.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00010.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00010.png new file mode 100644 index 00000000..830a7e08 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00010.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00011.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00011.png new file mode 100644 index 00000000..66d10818 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00011.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00012.png new file mode 100644 index 00000000..bdae02ba Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00012.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00013.png new file mode 100644 index 00000000..e3a0cc5f Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00013.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00014.png new file mode 100644 index 00000000..99a35962 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00014.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00015.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00015.png new file mode 100644 index 00000000..0a823482 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00015.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00016.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00016.png new file mode 100644 index 00000000..1e6fd923 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00016.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00017.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00017.png new file mode 100644 index 00000000..2a35fda1 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00017.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00018.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00018.png new file mode 100644 index 00000000..b1745edf Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00019.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00004.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00019.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00020.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00005.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00020.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00006.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00021.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00022.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00022.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00023.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00008.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00009.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00024.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00025.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00025.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00025.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00026.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00026.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00026.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00027.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00027.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00027.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00028.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00012.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00029.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00029.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00030.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00014.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part5/00030.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00000.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00000.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00000.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00001.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00001.png new file mode 100644 index 00000000..4743ee1e Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00001.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00002.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00002.png new file mode 100644 index 00000000..90fa664d Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00002.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00003.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00003.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00004.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00005.png new file mode 100644 index 00000000..d1a71de0 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00005.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00006.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00007.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00007.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00008.png new file mode 100644 index 00000000..7e0fbecb Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00008.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00009.png new file mode 100644 index 00000000..2d840c0e Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00009.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00010.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00010.png new file mode 100644 index 00000000..830a7e08 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00010.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00011.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00011.png new file mode 100644 index 00000000..66d10818 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00011.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00012.png new file mode 100644 index 00000000..bdae02ba Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00012.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00013.png new file mode 100644 index 00000000..e3a0cc5f Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00013.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00014.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00014.png new file mode 100644 index 00000000..99a35962 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00014.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00015.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00015.png new file mode 100644 index 00000000..0a823482 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00015.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00016.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00016.png new file mode 100644 index 00000000..1e6fd923 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00016.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00017.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00017.png new file mode 100644 index 00000000..2a35fda1 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00017.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00018.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00018.png new file mode 100644 index 00000000..b0c66682 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00018.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00019.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00019.png new file mode 100644 index 00000000..98ba14cf Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00019.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00020.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00020.png new file mode 100644 index 00000000..32be4a8a Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00020.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00021.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00021.png new file mode 100644 index 00000000..d3fef119 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00004.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00022.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00004.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00022.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00005.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00023.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00005.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00006.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00006.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00024.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00025.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00025.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00008.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00026.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00008.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00026.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00009.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00027.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00009.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00027.png diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00028.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00028.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00028.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00029.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00029.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00029.png differ diff --git a/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00030.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00030.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00030.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00012.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00031.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00012.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00031.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00032.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00032.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00013.png b/tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00033.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00013.png rename to tests/snapshots/nanosp/test_arbitrary_transaction_signing_expert/part6/00033.png diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png index f4678f9e..e13897cc 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png index 0d4c7e89..bc69da31 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00003.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00003.png index 5b1bbacf..a5f0a458 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00003.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00003.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png index 64267258..8f31a63d 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png index d36c460a..fe929f2f 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png index 4c40091e..dc345fad 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00003.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00003.png index aced2099..591eed05 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00003.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00003.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png index 64267258..8f31a63d 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00006.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00006.png index d9b5efc5..de8a2912 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00006.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00006.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_expert/00001.png b/tests/snapshots/nanosp/test_get_public_key_expert/00001.png index e10e0049..8472e5d9 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_expert/00001.png and b/tests/snapshots/nanosp/test_get_public_key_expert/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_expert/00002.png b/tests/snapshots/nanosp/test_get_public_key_expert/00002.png index 7e236da6..f7921677 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_expert/00002.png and b/tests/snapshots/nanosp/test_get_public_key_expert/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_slot/part0/00001.png b/tests/snapshots/nanosp/test_get_public_key_slot/part0/00001.png index c99f676e..9ffae7e2 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_slot/part0/00001.png and b/tests/snapshots/nanosp/test_get_public_key_slot/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_slot/part1/00001.png b/tests/snapshots/nanosp/test_get_public_key_slot/part1/00001.png index 673039ba..d0a5ee96 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_slot/part1/00001.png and b/tests/snapshots/nanosp/test_get_public_key_slot/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_slot_accepted/part0/00001.png b/tests/snapshots/nanosp/test_get_slot_accepted/part0/00001.png index 27089844..e31e3d49 100644 Binary files a/tests/snapshots/nanosp/test_get_slot_accepted/part0/00001.png and b/tests/snapshots/nanosp/test_get_slot_accepted/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_slot_accepted/part1/00001.png b/tests/snapshots/nanosp/test_get_slot_accepted/part1/00001.png index 994eb48b..f41d9132 100644 Binary files a/tests/snapshots/nanosp/test_get_slot_accepted/part1/00001.png and b/tests/snapshots/nanosp/test_get_slot_accepted/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_slot_accepted/part2/00001.png b/tests/snapshots/nanosp/test_get_slot_accepted/part2/00001.png index 8f57f746..fefb4c83 100644 Binary files a/tests/snapshots/nanosp/test_get_slot_accepted/part2/00001.png and b/tests/snapshots/nanosp/test_get_slot_accepted/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_slot_refused/00001.png b/tests/snapshots/nanosp/test_get_slot_refused/00001.png index 27089844..e31e3d49 100644 Binary files a/tests/snapshots/nanosp/test_get_slot_refused/00001.png and b/tests/snapshots/nanosp/test_get_slot_refused/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_slot_refused/00005.png b/tests/snapshots/nanosp/test_get_slot_refused/00005.png index d9b5efc5..de8a2912 100644 Binary files a/tests/snapshots/nanosp/test_get_slot_refused/00005.png and b/tests/snapshots/nanosp/test_get_slot_refused/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00000.png b/tests/snapshots/nanosp/test_message_normal/part0/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00000.png rename to tests/snapshots/nanosp/test_message_normal/part0/00000.png diff --git a/tests/snapshots/nanosp/test_message_normal/part0/00001.png b/tests/snapshots/nanosp/test_message_normal/part0/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part0/00002.png b/tests/snapshots/nanosp/test_message_normal/part0/00002.png new file mode 100644 index 00000000..0f36734e Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part0/00003.png b/tests/snapshots/nanosp/test_message_normal/part0/00003.png new file mode 100644 index 00000000..24b411d6 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part0/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00013.png b/tests/snapshots/nanosp/test_message_normal/part0/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00013.png rename to tests/snapshots/nanosp/test_message_normal/part0/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00016.png b/tests/snapshots/nanosp/test_message_normal/part0/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00016.png rename to tests/snapshots/nanosp/test_message_normal/part0/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00026.png b/tests/snapshots/nanosp/test_message_normal/part1/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00026.png rename to tests/snapshots/nanosp/test_message_normal/part1/00000.png diff --git a/tests/snapshots/nanosp/test_message_normal/part1/00001.png b/tests/snapshots/nanosp/test_message_normal/part1/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part1/00002.png b/tests/snapshots/nanosp/test_message_normal/part1/00002.png new file mode 100644 index 00000000..f7921677 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00025.png b/tests/snapshots/nanosp/test_message_normal/part1/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00025.png rename to tests/snapshots/nanosp/test_message_normal/part1/00003.png diff --git a/tests/snapshots/nanosp/test_message_normal/part1/00004.png b/tests/snapshots/nanosp/test_message_normal/part1/00004.png new file mode 100644 index 00000000..8b16b4d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part1/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00013.png b/tests/snapshots/nanosp/test_message_normal/part1/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00013.png rename to tests/snapshots/nanosp/test_message_normal/part1/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00028.png b/tests/snapshots/nanosp/test_message_normal/part1/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00028.png rename to tests/snapshots/nanosp/test_message_normal/part1/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00000.png b/tests/snapshots/nanosp/test_message_normal/part2/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00000.png rename to tests/snapshots/nanosp/test_message_normal/part2/00000.png diff --git a/tests/snapshots/nanosp/test_message_normal/part2/00001.png b/tests/snapshots/nanosp/test_message_normal/part2/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part2/00002.png b/tests/snapshots/nanosp/test_message_normal/part2/00002.png new file mode 100644 index 00000000..fc4e7e0d Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part2/00002.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part2/00003.png b/tests/snapshots/nanosp/test_message_normal/part2/00003.png new file mode 100644 index 00000000..b6b0217c Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part2/00003.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part2/00004.png b/tests/snapshots/nanosp/test_message_normal/part2/00004.png new file mode 100644 index 00000000..8b16b4d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part2/00004.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part2/00005.png b/tests/snapshots/nanosp/test_message_normal/part2/00005.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00012.png b/tests/snapshots/nanosp/test_message_normal/part2/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00012.png rename to tests/snapshots/nanosp/test_message_normal/part2/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00034.png b/tests/snapshots/nanosp/test_message_normal/part2/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00034.png rename to tests/snapshots/nanosp/test_message_normal/part2/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00000.png b/tests/snapshots/nanosp/test_message_normal/part3/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00000.png rename to tests/snapshots/nanosp/test_message_normal/part3/00000.png diff --git a/tests/snapshots/nanosp/test_message_normal/part3/00001.png b/tests/snapshots/nanosp/test_message_normal/part3/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part3/00001.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part3/00002.png b/tests/snapshots/nanosp/test_message_normal/part3/00002.png new file mode 100644 index 00000000..0f36734e Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part3/00002.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part3/00003.png b/tests/snapshots/nanosp/test_message_normal/part3/00003.png new file mode 100644 index 00000000..24b411d6 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part3/00003.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part3/00004.png b/tests/snapshots/nanosp/test_message_normal/part3/00004.png new file mode 100644 index 00000000..94fa1038 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part3/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00015.png b/tests/snapshots/nanosp/test_message_normal/part3/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00015.png rename to tests/snapshots/nanosp/test_message_normal/part3/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00015.png b/tests/snapshots/nanosp/test_message_normal/part3/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00015.png rename to tests/snapshots/nanosp/test_message_normal/part3/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00000.png b/tests/snapshots/nanosp/test_message_normal/part4/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00000.png rename to tests/snapshots/nanosp/test_message_normal/part4/00000.png diff --git a/tests/snapshots/nanosp/test_message_normal/part4/00001.png b/tests/snapshots/nanosp/test_message_normal/part4/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part4/00001.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part4/00002.png b/tests/snapshots/nanosp/test_message_normal/part4/00002.png new file mode 100644 index 00000000..fc4e7e0d Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part4/00002.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part4/00003.png b/tests/snapshots/nanosp/test_message_normal/part4/00003.png new file mode 100644 index 00000000..b6b0217c Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part4/00003.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part4/00004.png b/tests/snapshots/nanosp/test_message_normal/part4/00004.png new file mode 100644 index 00000000..8b16b4d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part4/00004.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part4/00005.png b/tests/snapshots/nanosp/test_message_normal/part4/00005.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part4/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00025.png b/tests/snapshots/nanosp/test_message_normal/part4/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00025.png rename to tests/snapshots/nanosp/test_message_normal/part4/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00018.png b/tests/snapshots/nanosp/test_message_normal/part4/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00018.png rename to tests/snapshots/nanosp/test_message_normal/part4/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00024.png b/tests/snapshots/nanosp/test_message_normal/part5/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00024.png rename to tests/snapshots/nanosp/test_message_normal/part5/00000.png diff --git a/tests/snapshots/nanosp/test_message_normal/part5/00001.png b/tests/snapshots/nanosp/test_message_normal/part5/00001.png new file mode 100644 index 00000000..f7921677 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part5/00001.png differ diff --git a/tests/snapshots/nanosp/test_message_normal/part5/00002.png b/tests/snapshots/nanosp/test_message_normal/part5/00002.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanosp/test_message_normal/part5/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00017.png b/tests/snapshots/nanosp/test_message_normal/part5/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00017.png rename to tests/snapshots/nanosp/test_message_normal/part5/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_expert/part0/00001.png b/tests/snapshots/nanosp/test_transaction_expert/part0/00001.png index e10e0049..8472e5d9 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part0/00001.png and b/tests/snapshots/nanosp/test_transaction_expert/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part0/00002.png b/tests/snapshots/nanosp/test_transaction_expert/part0/00002.png index 7e236da6..f7921677 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part0/00002.png and b/tests/snapshots/nanosp/test_transaction_expert/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00001.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00001.png index 5b962ee9..262b4b5e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00001.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00002.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00002.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00003.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00003.png index 81263f9e..de527bf7 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00003.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00004.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00004.png index 4b4eb598..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00004.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00005.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00005.png index d1eb962c..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00005.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00006.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00006.png index 11ac632e..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00006.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00007.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00007.png index 62827380..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00007.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00008.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00008.png index 68020b16..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00008.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00009.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00009.png index bff4ff72..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00009.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00010.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00010.png index c02f5ccb..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00010.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00011.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00011.png index 42cf0b73..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00011.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00012.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00012.png index 819d3159..2a16d649 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00012.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00013.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00013.png index 2a16d649..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00013.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00014.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00014.png index cc0bd7b2..1e4be699 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00014.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part1/00015.png b/tests/snapshots/nanosp/test_transaction_expert/part1/00015.png index 1e4be699..e84e8dfd 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part1/00015.png and b/tests/snapshots/nanosp/test_transaction_expert/part1/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00001.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00001.png index 5b962ee9..262b4b5e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00001.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00002.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00002.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00003.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00003.png index 81263f9e..de527bf7 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00003.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00004.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00004.png index 4b4eb598..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00004.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00005.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00005.png index d1eb962c..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00005.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00006.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00006.png index 11ac632e..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00006.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00007.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00007.png index 62827380..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00007.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00008.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00008.png index 68020b16..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00008.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00009.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00009.png index bff4ff72..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00009.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00010.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00010.png index c02f5ccb..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00010.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00011.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00011.png index 42cf0b73..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00011.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00012.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00012.png index 819d3159..94fa1038 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00012.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00013.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00013.png index 94fa1038..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00013.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00014.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00014.png index cc0bd7b2..1e4be699 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00014.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_expert/part2/00015.png b/tests/snapshots/nanosp/test_transaction_expert/part2/00015.png index 1e4be699..e84e8dfd 100644 Binary files a/tests/snapshots/nanosp/test_transaction_expert/part2/00015.png and b/tests/snapshots/nanosp/test_transaction_expert/part2/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00001.png new file mode 100644 index 00000000..a10bf897 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00001.png new file mode 100644 index 00000000..a10bf897 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00012.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00015.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00016.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00027.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.01-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00001.png new file mode 100644 index 00000000..3d59a433 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00033.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00033.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00001.png new file mode 100644 index 00000000..3d59a433 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00012.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00015.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00016.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.02-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00001.png new file mode 100644 index 00000000..262b4b5e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00003.png new file mode 100644 index 00000000..de527bf7 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00001.png new file mode 100644 index 00000000..262b4b5e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00003.png new file mode 100644 index 00000000..de527bf7 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FA.03-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00001.png new file mode 100644 index 00000000..024c5d5d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00003.png new file mode 100644 index 00000000..b2da9ff2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00004.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00001.png new file mode 100644 index 00000000..024c5d5d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00003.png new file mode 100644 index 00000000..81dbe50c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00004.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.01-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00001.png new file mode 100644 index 00000000..5b23ff70 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00001.png new file mode 100644 index 00000000..5b23ff70 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00004.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.02-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00001.png new file mode 100644 index 00000000..b2e52410 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00005.png new file mode 100644 index 00000000..b2da9ff2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00006.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00001.png new file mode 100644 index 00000000..b2e52410 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00004.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00005.png new file mode 100644 index 00000000..81dbe50c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00006.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/FT.03-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00006.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.01-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00008.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/FUSD.02-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00001.png new file mode 100644 index 00000000..fb3206fe Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00003.png new file mode 100644 index 00000000..4817e4a5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00004.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00001.png new file mode 100644 index 00000000..fb3206fe Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00003.png new file mode 100644 index 00000000..31003174 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00004.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.01-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00001.png new file mode 100644 index 00000000..2be9f2a2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00003.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00001.png new file mode 100644 index 00000000..2be9f2a2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00003.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.02-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00001.png new file mode 100644 index 00000000..00acffb3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00003.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00005.png new file mode 100644 index 00000000..4817e4a5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00006.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00001.png new file mode 100644 index 00000000..00acffb3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00003.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00005.png new file mode 100644 index 00000000..31003174 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00006.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/NFT.03-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part20/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part20/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00006.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.01-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.02-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00015.png new file mode 100644 index 00000000..c611a6df Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part22/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00026.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Mainnet/00026.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00015.png new file mode 100644 index 00000000..c611a6df Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00019.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00022.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00022.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00023.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00023.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00025.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00026.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-1-Testnet/00026.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part23/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Mainnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00018.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00021.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00022.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00022.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-2-Testnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00015.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00016.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00017.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00026.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part24/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00026.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00027.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00027.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00027.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00028.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Mainnet/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00015.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00016.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00017.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00021.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00024.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00024.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00025.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00025.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00026.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00026.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00027.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00027.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00027.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00028.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-3-Testnet/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00015.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00016.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00017.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00018.png new file mode 100644 index 00000000..b439d972 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00019.png new file mode 100644 index 00000000..e3f0aa3c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00020.png new file mode 100644 index 00000000..554f4155 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00021.png new file mode 100644 index 00000000..e062f4f5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00022.png new file mode 100644 index 00000000..e3bc0791 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00022.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00023.png new file mode 100644 index 00000000..06bf621c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00023.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00026.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00026.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00027.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00027.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00027.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00028.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00029.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00029.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00029.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00029.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00030.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00030.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00030.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00030.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00031.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00031.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00031.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00031.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00032.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00032.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part25/00032.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00032.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00033.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00033.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00033.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00033.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00034.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00034.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00034.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Mainnet/00034.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00015.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00016.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00017.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00018.png new file mode 100644 index 00000000..b439d972 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00019.png new file mode 100644 index 00000000..e3f0aa3c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00020.png new file mode 100644 index 00000000..554f4155 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00021.png new file mode 100644 index 00000000..e062f4f5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00022.png new file mode 100644 index 00000000..e3bc0791 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00022.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00023.png new file mode 100644 index 00000000..06bf621c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00023.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00025.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00026.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00026.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00027.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00027.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00028.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00029.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00029.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00029.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00029.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00030.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00030.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00030.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00031.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00031.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00031.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00032.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00032.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00032.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00032.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00033.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00033.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00033.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00033.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00034.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00034.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00034.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-4-Testnet/00034.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00005.png new file mode 100644 index 00000000..29ee492c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00015.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00016.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00017.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00018.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00019.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00020.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00021.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00022.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00026.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00026.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00027.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00027.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00028.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00029.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00029.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00030.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Mainnet/00030.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00005.png new file mode 100644 index 00000000..29ee492c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00015.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00016.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00017.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00018.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00019.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00020.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00021.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00022.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00023.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00025.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00026.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00026.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00027.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00027.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00028.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00028.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00029.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00029.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00030.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.03-Testnet/00030.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part26/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part26/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00008.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-1-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00005.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00006.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00007.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part27/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00005.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00006.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00007.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00011.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00014.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00015.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-2-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00005.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00006.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00007.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00008.png new file mode 100644 index 00000000..b439d972 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00009.png new file mode 100644 index 00000000..e3f0aa3c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00010.png new file mode 100644 index 00000000..554f4155 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00011.png new file mode 100644 index 00000000..e062f4f5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00012.png new file mode 100644 index 00000000..e3bc0791 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00013.png new file mode 100644 index 00000000..06bf621c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part28/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00023.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Mainnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00005.png new file mode 100644 index 00000000..6f603bc3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00006.png new file mode 100644 index 00000000..4aabf2d0 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00007.png new file mode 100644 index 00000000..aabca8e3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00008.png new file mode 100644 index 00000000..b439d972 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00009.png new file mode 100644 index 00000000..e3f0aa3c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00010.png new file mode 100644 index 00000000..554f4155 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00011.png new file mode 100644 index 00000000..e062f4f5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00012.png new file mode 100644 index 00000000..e3bc0791 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00013.png new file mode 100644 index 00000000..06bf621c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00017.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00020.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00021.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00022.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00023.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-3-Testnet/00024.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00005.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00006.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00007.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00008.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00009.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Mainnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00005.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00006.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00007.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00008.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00009.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00013.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00029.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00029.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00016.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00017.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00032.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00018.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00032.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.04-Testnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-1-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00001.png new file mode 100644 index 00000000..9c58d43d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00001.png new file mode 100644 index 00000000..9c58d43d Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.05-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-1-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.06-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-1-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.07-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-1-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.08-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part37/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part37/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.09-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-1-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00029.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00029.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00032.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00032.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.10-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-1-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.11-2-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-1-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.12-2-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00005.png new file mode 100644 index 00000000..ed942ba7 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.13-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00006.png new file mode 100644 index 00000000..ed942ba7 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.14-Testnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.15-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/SCO.16-Testnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00001.png new file mode 100644 index 00000000..9f584f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00001.png new file mode 100644 index 00000000..9f584f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.01-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00001.png new file mode 100644 index 00000000..7e23f8fe Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00001.png new file mode 100644 index 00000000..7e23f8fe Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.02-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00007.png new file mode 100644 index 00000000..d919f55a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00008.png new file mode 100644 index 00000000..b0c1952a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00009.png new file mode 100644 index 00000000..6c835552 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00016.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00018.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00019.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00020.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00021.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00021.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part3/00022.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00022.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Mainnet/00025.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00006.png new file mode 100644 index 00000000..fc817672 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00007.png new file mode 100644 index 00000000..d919f55a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00008.png new file mode 100644 index 00000000..b0c1952a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00009.png new file mode 100644 index 00000000..6c835552 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00010.png new file mode 100644 index 00000000..8d9a9df2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00011.png new file mode 100644 index 00000000..a35defdc Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00012.png new file mode 100644 index 00000000..0e078d2b Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00013.png new file mode 100644 index 00000000..87e1818f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00017.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00017.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00018.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00019.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00019.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00020.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00020.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00021.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00022.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00022.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00023.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.06-Testnet/00025.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00001.png new file mode 100644 index 00000000..8b0814a5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part1/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00001.png new file mode 100644 index 00000000..8b0814a5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.08-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00001.png new file mode 100644 index 00000000..d50c53c8 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part10/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00001.png new file mode 100644 index 00000000..d50c53c8 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00026.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00026.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.09-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00001.png new file mode 100644 index 00000000..1a98771b Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part13/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00028.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00028.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00001.png new file mode 100644 index 00000000..1a98771b Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00034.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00034.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.10-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00001.png new file mode 100644 index 00000000..790eb4d3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00001.png new file mode 100644 index 00000000..790eb4d3 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00018.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.11-Testnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part48/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part48/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00006.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.12-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part56/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00025.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00025.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00024.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00024.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.13-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00027.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00033.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00033.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.14-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part11/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part11/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00003.png new file mode 100644 index 00000000..1cdddc8a Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00010.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part29/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00017.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.16-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part12/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part12/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00023.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00000.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00009.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00014.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part21/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00014.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.17-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00000.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00000.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00000.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00001.png new file mode 100644 index 00000000..a1bc989e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part17/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00001.png new file mode 100644 index 00000000..a1bc989e Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.19-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part14/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part14/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part30/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part18/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part31/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.20-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part15/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part15/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part7/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part32/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part33/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.21-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part16/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part16/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part34/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part2/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part35/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.22-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part9/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part36/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part4/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part38/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.23-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part1/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part39/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part5/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part40/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.24-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part10/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part19/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part19/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part41/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part6/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part42/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00007.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TH.25-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00001.png new file mode 100644 index 00000000..189e1bf8 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00004.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part50/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00001.png new file mode 100644 index 00000000..189e1bf8 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part43/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00006.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part12/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part12/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00003.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part49/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part49/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00003.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00004.png new file mode 100644 index 00000000..e27c29c4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00005.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00008.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part58/00013.png rename to tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/TS.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part13/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part44/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part52/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part52/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part8/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00010.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00015.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00004.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part45/00009.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00006.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00011.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part14/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part14/00002.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00002.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part53/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00004.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part46/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part51/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00008.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00010.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00009.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00011.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00012.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00012.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00014.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00013.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00000.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00001.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00001.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00002.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00003.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00003.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00003.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00004.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00006.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00005.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00007.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00006.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part47/00008.png rename to tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00007.png diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00008.png new file mode 100644 index 00000000..70d85793 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00009.png new file mode 100644 index 00000000..bff4ff72 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00010.png new file mode 100644 index 00000000..c02f5ccb Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00013.png new file mode 100644 index 00000000..cc0bd7b2 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00014.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_manifest/USDC.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part1/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part1/00001.png deleted file mode 100644 index 1f18d3ce..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part1/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part10/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part10/00001.png deleted file mode 100644 index b130567a..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part10/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part13/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part13/00001.png deleted file mode 100644 index f0aa3aad..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part13/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part17/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part17/00001.png deleted file mode 100644 index 340d4c11..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part17/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part18/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part18/00001.png deleted file mode 100644 index 36e99063..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part18/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part2/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part2/00001.png deleted file mode 100644 index 22f825fa..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part2/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part21/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part21/00009.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part21/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part22/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part22/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part22/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/part22/00015.png deleted file mode 100644 index f56d1952..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part22/00015.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part23/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part23/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part23/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part24/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part24/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/part24/00015.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part24/00015.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/part24/00016.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part24/00016.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part24/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/part24/00017.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part24/00017.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00015.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00015.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00016.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00016.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00017.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00017.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00018.png deleted file mode 100644 index 00896880..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00018.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00019.png deleted file mode 100644 index 73daf6b9..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00019.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00020.png deleted file mode 100644 index ef8cac37..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00020.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00021.png deleted file mode 100644 index 46a36793..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00021.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00022.png deleted file mode 100644 index d2af1b1c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00022.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part25/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/part25/00023.png deleted file mode 100644 index fd0acfcf..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part25/00023.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/part27/00005.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part27/00005.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part27/00006.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part27/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part27/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part27/00007.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part27/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00005.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00005.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00006.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00007.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00008.png deleted file mode 100644 index 00896880..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00008.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00009.png deleted file mode 100644 index 73daf6b9..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00010.png deleted file mode 100644 index ef8cac37..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00011.png deleted file mode 100644 index 46a36793..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00011.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00012.png deleted file mode 100644 index d2af1b1c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00012.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part28/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/part28/00013.png deleted file mode 100644 index fd0acfcf..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part28/00013.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part29/00001.png deleted file mode 100644 index 7e693c38..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part29/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part29/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part29/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part29/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part3/00001.png deleted file mode 100644 index a3da9bf2..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part3/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part3/00006.png deleted file mode 100644 index deb7599f..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part3/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part3/00007.png deleted file mode 100644 index efd69617..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part3/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/part3/00008.png deleted file mode 100644 index bcd3ca5a..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part3/00008.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part3/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part3/00009.png deleted file mode 100644 index a550be10..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part3/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part30/00001.png deleted file mode 100644 index 7e693c38..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part30/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part30/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part30/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part30/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part31/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part31/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part31/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part32/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part32/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part32/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part33/00001.png deleted file mode 100644 index cd2079c3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part33/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part33/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part33/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part33/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part34/00001.png deleted file mode 100644 index cd2079c3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part34/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part34/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part34/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part34/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part35/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part35/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part35/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part36/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part36/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part36/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part38/00001.png deleted file mode 100644 index ea667038..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part38/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part38/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part38/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part38/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part39/00001.png deleted file mode 100644 index ea667038..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part39/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part39/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part39/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part39/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part4/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part4/00001.png deleted file mode 100644 index 83973f38..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part4/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part40/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part40/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part40/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part41/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part41/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part41/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part42/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part42/00009.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part42/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part43/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part43/00009.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part43/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part44/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part44/00009.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part44/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part45/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part45/00010.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part45/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part46/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part46/00009.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part46/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part47/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part47/00009.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part47/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part5/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part5/00001.png deleted file mode 100644 index 043b17c0..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part5/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part50/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part50/00001.png deleted file mode 100644 index 22981185..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part50/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part51/00004.png b/tests/snapshots/nanosp/test_transaction_manifest/part51/00004.png deleted file mode 100644 index 84dd6243..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part51/00004.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part53/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/part53/00008.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part53/00008.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part54/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part54/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/part54/00015.png deleted file mode 100644 index f56d1952..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part54/00015.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/part54/00019.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part54/00019.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part55/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part55/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/part55/00018.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part55/00018.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part56/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part56/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/part56/00015.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part56/00015.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/part56/00016.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part56/00016.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part56/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/part56/00017.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part56/00017.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00006.png deleted file mode 100644 index d04304b3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00015.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00015.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00015.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00016.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00016.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00016.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00017.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00017.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00018.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00018.png deleted file mode 100644 index 00896880..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00018.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00019.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00019.png deleted file mode 100644 index 73daf6b9..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00019.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00020.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00020.png deleted file mode 100644 index ef8cac37..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00020.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00021.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00021.png deleted file mode 100644 index 46a36793..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00021.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00022.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00022.png deleted file mode 100644 index d2af1b1c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00022.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00023.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00023.png deleted file mode 100644 index fd0acfcf..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00023.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00027.png b/tests/snapshots/nanosp/test_transaction_manifest/part57/00027.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part57/00027.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part58/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/part58/00008.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part58/00008.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/part59/00005.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part59/00005.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part59/00006.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part59/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part59/00007.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part59/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/part59/00011.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part59/00011.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part6/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part6/00001.png deleted file mode 100644 index 1dda0bac..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part6/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00005.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00005.png deleted file mode 100644 index 3efb307e..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00005.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00006.png deleted file mode 100644 index 14eb4a9c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00007.png deleted file mode 100644 index b1de41c4..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00008.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00008.png deleted file mode 100644 index 00896880..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00008.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00009.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00009.png deleted file mode 100644 index 73daf6b9..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00009.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00010.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00010.png deleted file mode 100644 index ef8cac37..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00010.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00011.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00011.png deleted file mode 100644 index 46a36793..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00011.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00012.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00012.png deleted file mode 100644 index d2af1b1c..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00012.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00013.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00013.png deleted file mode 100644 index fd0acfcf..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00013.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00017.png b/tests/snapshots/nanosp/test_transaction_manifest/part60/00017.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part60/00017.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part7/00001.png deleted file mode 100644 index c6547ca3..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part7/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part7/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part7/00007.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part7/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part8/00006.png b/tests/snapshots/nanosp/test_transaction_manifest/part8/00006.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part8/00006.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00001.png b/tests/snapshots/nanosp/test_transaction_manifest/part9/00001.png deleted file mode 100644 index a1214c74..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part9/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part9/00007.png b/tests/snapshots/nanosp/test_transaction_manifest/part9/00007.png deleted file mode 100644 index 3ad758de..00000000 Binary files a/tests/snapshots/nanosp/test_transaction_manifest/part9/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00001.png b/tests/snapshots/nanosp/test_transaction_params/part1/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00002.png b/tests/snapshots/nanosp/test_transaction_params/part1/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00003.png b/tests/snapshots/nanosp/test_transaction_params/part1/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00004.png b/tests/snapshots/nanosp/test_transaction_params/part1/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00005.png b/tests/snapshots/nanosp/test_transaction_params/part1/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00006.png b/tests/snapshots/nanosp/test_transaction_params/part1/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00007.png b/tests/snapshots/nanosp/test_transaction_params/part1/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00008.png b/tests/snapshots/nanosp/test_transaction_params/part1/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00009.png b/tests/snapshots/nanosp/test_transaction_params/part1/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00010.png b/tests/snapshots/nanosp/test_transaction_params/part1/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00011.png b/tests/snapshots/nanosp/test_transaction_params/part1/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00012.png b/tests/snapshots/nanosp/test_transaction_params/part1/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00013.png b/tests/snapshots/nanosp/test_transaction_params/part1/00013.png index cc0bd7b2..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00014.png b/tests/snapshots/nanosp/test_transaction_params/part1/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00015.png b/tests/snapshots/nanosp/test_transaction_params/part1/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part1/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part1/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00023.png b/tests/snapshots/nanosp/test_transaction_params/part1/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00023.png rename to tests/snapshots/nanosp/test_transaction_params/part1/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00017.png b/tests/snapshots/nanosp/test_transaction_params/part1/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part1/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00018.png b/tests/snapshots/nanosp/test_transaction_params/part1/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part1/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part1/00019.png b/tests/snapshots/nanosp/test_transaction_params/part1/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part1/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00001.png b/tests/snapshots/nanosp/test_transaction_params/part10/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00002.png b/tests/snapshots/nanosp/test_transaction_params/part10/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00003.png b/tests/snapshots/nanosp/test_transaction_params/part10/00003.png index 32e37fb8..de527bf7 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00004.png b/tests/snapshots/nanosp/test_transaction_params/part10/00004.png index 560f9f00..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00005.png b/tests/snapshots/nanosp/test_transaction_params/part10/00005.png index bb4d12c7..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00006.png b/tests/snapshots/nanosp/test_transaction_params/part10/00006.png index d1eb962c..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00007.png b/tests/snapshots/nanosp/test_transaction_params/part10/00007.png index 11ac632e..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00008.png b/tests/snapshots/nanosp/test_transaction_params/part10/00008.png index 62827380..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00009.png b/tests/snapshots/nanosp/test_transaction_params/part10/00009.png index 68020b16..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00010.png b/tests/snapshots/nanosp/test_transaction_params/part10/00010.png index bff4ff72..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00011.png b/tests/snapshots/nanosp/test_transaction_params/part10/00011.png index c02f5ccb..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00012.png b/tests/snapshots/nanosp/test_transaction_params/part10/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00013.png b/tests/snapshots/nanosp/test_transaction_params/part10/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part10/00014.png b/tests/snapshots/nanosp/test_transaction_params/part10/00014.png index cc0bd7b2..e84e8dfd 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part10/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part10/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00001.png b/tests/snapshots/nanosp/test_transaction_params/part11/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00002.png b/tests/snapshots/nanosp/test_transaction_params/part11/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00003.png b/tests/snapshots/nanosp/test_transaction_params/part11/00003.png index 32e37fb8..de527bf7 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00004.png b/tests/snapshots/nanosp/test_transaction_params/part11/00004.png index 560f9f00..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00005.png b/tests/snapshots/nanosp/test_transaction_params/part11/00005.png index bb4d12c7..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00006.png b/tests/snapshots/nanosp/test_transaction_params/part11/00006.png index d1eb962c..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00007.png b/tests/snapshots/nanosp/test_transaction_params/part11/00007.png index 11ac632e..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00008.png b/tests/snapshots/nanosp/test_transaction_params/part11/00008.png index 62827380..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00009.png b/tests/snapshots/nanosp/test_transaction_params/part11/00009.png index 68020b16..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00010.png b/tests/snapshots/nanosp/test_transaction_params/part11/00010.png index bff4ff72..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00011.png b/tests/snapshots/nanosp/test_transaction_params/part11/00011.png index c02f5ccb..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00012.png b/tests/snapshots/nanosp/test_transaction_params/part11/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00013.png b/tests/snapshots/nanosp/test_transaction_params/part11/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part11/00014.png b/tests/snapshots/nanosp/test_transaction_params/part11/00014.png index cc0bd7b2..e84e8dfd 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part11/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part11/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00001.png b/tests/snapshots/nanosp/test_transaction_params/part12/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00002.png b/tests/snapshots/nanosp/test_transaction_params/part12/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00003.png b/tests/snapshots/nanosp/test_transaction_params/part12/00003.png index 32e37fb8..de527bf7 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00004.png b/tests/snapshots/nanosp/test_transaction_params/part12/00004.png index 560f9f00..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00005.png b/tests/snapshots/nanosp/test_transaction_params/part12/00005.png index bb4d12c7..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00006.png b/tests/snapshots/nanosp/test_transaction_params/part12/00006.png index d1eb962c..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00007.png b/tests/snapshots/nanosp/test_transaction_params/part12/00007.png index 11ac632e..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00008.png b/tests/snapshots/nanosp/test_transaction_params/part12/00008.png index 62827380..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00009.png b/tests/snapshots/nanosp/test_transaction_params/part12/00009.png index 68020b16..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00010.png b/tests/snapshots/nanosp/test_transaction_params/part12/00010.png index bff4ff72..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00011.png b/tests/snapshots/nanosp/test_transaction_params/part12/00011.png index c02f5ccb..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00012.png b/tests/snapshots/nanosp/test_transaction_params/part12/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00013.png b/tests/snapshots/nanosp/test_transaction_params/part12/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part12/00014.png b/tests/snapshots/nanosp/test_transaction_params/part12/00014.png index cc0bd7b2..e84e8dfd 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part12/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part12/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00001.png b/tests/snapshots/nanosp/test_transaction_params/part2/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00002.png b/tests/snapshots/nanosp/test_transaction_params/part2/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00003.png b/tests/snapshots/nanosp/test_transaction_params/part2/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00004.png b/tests/snapshots/nanosp/test_transaction_params/part2/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00005.png b/tests/snapshots/nanosp/test_transaction_params/part2/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00006.png b/tests/snapshots/nanosp/test_transaction_params/part2/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00007.png b/tests/snapshots/nanosp/test_transaction_params/part2/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00008.png b/tests/snapshots/nanosp/test_transaction_params/part2/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00009.png b/tests/snapshots/nanosp/test_transaction_params/part2/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00010.png b/tests/snapshots/nanosp/test_transaction_params/part2/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00011.png b/tests/snapshots/nanosp/test_transaction_params/part2/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00012.png b/tests/snapshots/nanosp/test_transaction_params/part2/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00013.png b/tests/snapshots/nanosp/test_transaction_params/part2/00013.png index cc0bd7b2..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00014.png b/tests/snapshots/nanosp/test_transaction_params/part2/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00015.png b/tests/snapshots/nanosp/test_transaction_params/part2/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part2/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part2/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00022.png b/tests/snapshots/nanosp/test_transaction_params/part2/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00022.png rename to tests/snapshots/nanosp/test_transaction_params/part2/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00017.png b/tests/snapshots/nanosp/test_transaction_params/part2/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part2/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00018.png b/tests/snapshots/nanosp/test_transaction_params/part2/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part2/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part2/00019.png b/tests/snapshots/nanosp/test_transaction_params/part2/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part2/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00001.png b/tests/snapshots/nanosp/test_transaction_params/part3/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00002.png b/tests/snapshots/nanosp/test_transaction_params/part3/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00003.png b/tests/snapshots/nanosp/test_transaction_params/part3/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00004.png b/tests/snapshots/nanosp/test_transaction_params/part3/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00005.png b/tests/snapshots/nanosp/test_transaction_params/part3/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00006.png b/tests/snapshots/nanosp/test_transaction_params/part3/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00007.png b/tests/snapshots/nanosp/test_transaction_params/part3/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00008.png b/tests/snapshots/nanosp/test_transaction_params/part3/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00009.png b/tests/snapshots/nanosp/test_transaction_params/part3/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00010.png b/tests/snapshots/nanosp/test_transaction_params/part3/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00011.png b/tests/snapshots/nanosp/test_transaction_params/part3/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00012.png b/tests/snapshots/nanosp/test_transaction_params/part3/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00013.png b/tests/snapshots/nanosp/test_transaction_params/part3/00013.png index cc0bd7b2..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00014.png b/tests/snapshots/nanosp/test_transaction_params/part3/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00015.png b/tests/snapshots/nanosp/test_transaction_params/part3/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part3/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part3/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00031.png b/tests/snapshots/nanosp/test_transaction_params/part3/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00031.png rename to tests/snapshots/nanosp/test_transaction_params/part3/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00017.png b/tests/snapshots/nanosp/test_transaction_params/part3/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part3/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00018.png b/tests/snapshots/nanosp/test_transaction_params/part3/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part3/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part3/00019.png b/tests/snapshots/nanosp/test_transaction_params/part3/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part3/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00001.png b/tests/snapshots/nanosp/test_transaction_params/part4/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00002.png b/tests/snapshots/nanosp/test_transaction_params/part4/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00003.png b/tests/snapshots/nanosp/test_transaction_params/part4/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00004.png b/tests/snapshots/nanosp/test_transaction_params/part4/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00005.png b/tests/snapshots/nanosp/test_transaction_params/part4/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00006.png b/tests/snapshots/nanosp/test_transaction_params/part4/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00007.png b/tests/snapshots/nanosp/test_transaction_params/part4/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00008.png b/tests/snapshots/nanosp/test_transaction_params/part4/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00009.png b/tests/snapshots/nanosp/test_transaction_params/part4/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00010.png b/tests/snapshots/nanosp/test_transaction_params/part4/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00011.png b/tests/snapshots/nanosp/test_transaction_params/part4/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00012.png b/tests/snapshots/nanosp/test_transaction_params/part4/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00013.png b/tests/snapshots/nanosp/test_transaction_params/part4/00013.png index cc0bd7b2..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00014.png b/tests/snapshots/nanosp/test_transaction_params/part4/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00015.png b/tests/snapshots/nanosp/test_transaction_params/part4/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part4/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part4/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00015.png b/tests/snapshots/nanosp/test_transaction_params/part4/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00015.png rename to tests/snapshots/nanosp/test_transaction_params/part4/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00017.png b/tests/snapshots/nanosp/test_transaction_params/part4/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part4/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00018.png b/tests/snapshots/nanosp/test_transaction_params/part4/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part4/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part4/00019.png b/tests/snapshots/nanosp/test_transaction_params/part4/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_params/part4/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00001.png b/tests/snapshots/nanosp/test_transaction_params/part5/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00002.png b/tests/snapshots/nanosp/test_transaction_params/part5/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00003.png b/tests/snapshots/nanosp/test_transaction_params/part5/00003.png index 70461f08..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00004.png b/tests/snapshots/nanosp/test_transaction_params/part5/00004.png index 7eb20372..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00005.png b/tests/snapshots/nanosp/test_transaction_params/part5/00005.png index 1c035abd..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00006.png b/tests/snapshots/nanosp/test_transaction_params/part5/00006.png index c149ed62..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00007.png b/tests/snapshots/nanosp/test_transaction_params/part5/00007.png index 56fb6671..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00008.png b/tests/snapshots/nanosp/test_transaction_params/part5/00008.png index c7682075..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00009.png b/tests/snapshots/nanosp/test_transaction_params/part5/00009.png index d1eb962c..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00010.png b/tests/snapshots/nanosp/test_transaction_params/part5/00010.png index 11ac632e..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00011.png b/tests/snapshots/nanosp/test_transaction_params/part5/00011.png index 62827380..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00012.png b/tests/snapshots/nanosp/test_transaction_params/part5/00012.png index 68020b16..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00013.png b/tests/snapshots/nanosp/test_transaction_params/part5/00013.png index bff4ff72..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00014.png b/tests/snapshots/nanosp/test_transaction_params/part5/00014.png index c02f5ccb..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00015.png b/tests/snapshots/nanosp/test_transaction_params/part5/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00016.png b/tests/snapshots/nanosp/test_transaction_params/part5/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00016.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part5/00017.png b/tests/snapshots/nanosp/test_transaction_params/part5/00017.png index cc0bd7b2..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part5/00017.png and b/tests/snapshots/nanosp/test_transaction_params/part5/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00001.png b/tests/snapshots/nanosp/test_transaction_params/part6/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00002.png b/tests/snapshots/nanosp/test_transaction_params/part6/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00003.png b/tests/snapshots/nanosp/test_transaction_params/part6/00003.png index 70461f08..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00004.png b/tests/snapshots/nanosp/test_transaction_params/part6/00004.png index 7eb20372..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00005.png b/tests/snapshots/nanosp/test_transaction_params/part6/00005.png index 1c035abd..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00006.png b/tests/snapshots/nanosp/test_transaction_params/part6/00006.png index c149ed62..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00007.png b/tests/snapshots/nanosp/test_transaction_params/part6/00007.png index 56fb6671..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00008.png b/tests/snapshots/nanosp/test_transaction_params/part6/00008.png index c7682075..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00009.png b/tests/snapshots/nanosp/test_transaction_params/part6/00009.png index d1eb962c..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00010.png b/tests/snapshots/nanosp/test_transaction_params/part6/00010.png index 11ac632e..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00011.png b/tests/snapshots/nanosp/test_transaction_params/part6/00011.png index 62827380..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00012.png b/tests/snapshots/nanosp/test_transaction_params/part6/00012.png index 68020b16..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00013.png b/tests/snapshots/nanosp/test_transaction_params/part6/00013.png index bff4ff72..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00014.png b/tests/snapshots/nanosp/test_transaction_params/part6/00014.png index c02f5ccb..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00015.png b/tests/snapshots/nanosp/test_transaction_params/part6/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00016.png b/tests/snapshots/nanosp/test_transaction_params/part6/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00016.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part6/00017.png b/tests/snapshots/nanosp/test_transaction_params/part6/00017.png index cc0bd7b2..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part6/00017.png and b/tests/snapshots/nanosp/test_transaction_params/part6/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00001.png b/tests/snapshots/nanosp/test_transaction_params/part7/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00002.png b/tests/snapshots/nanosp/test_transaction_params/part7/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00003.png b/tests/snapshots/nanosp/test_transaction_params/part7/00003.png index 70461f08..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00004.png b/tests/snapshots/nanosp/test_transaction_params/part7/00004.png index 7eb20372..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00005.png b/tests/snapshots/nanosp/test_transaction_params/part7/00005.png index 1c035abd..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00006.png b/tests/snapshots/nanosp/test_transaction_params/part7/00006.png index c149ed62..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00007.png b/tests/snapshots/nanosp/test_transaction_params/part7/00007.png index 56fb6671..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00008.png b/tests/snapshots/nanosp/test_transaction_params/part7/00008.png index c7682075..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00009.png b/tests/snapshots/nanosp/test_transaction_params/part7/00009.png index d1eb962c..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00010.png b/tests/snapshots/nanosp/test_transaction_params/part7/00010.png index 11ac632e..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00011.png b/tests/snapshots/nanosp/test_transaction_params/part7/00011.png index 62827380..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00012.png b/tests/snapshots/nanosp/test_transaction_params/part7/00012.png index 68020b16..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00013.png b/tests/snapshots/nanosp/test_transaction_params/part7/00013.png index bff4ff72..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00014.png b/tests/snapshots/nanosp/test_transaction_params/part7/00014.png index c02f5ccb..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00015.png b/tests/snapshots/nanosp/test_transaction_params/part7/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00016.png b/tests/snapshots/nanosp/test_transaction_params/part7/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00016.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part7/00017.png b/tests/snapshots/nanosp/test_transaction_params/part7/00017.png index cc0bd7b2..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part7/00017.png and b/tests/snapshots/nanosp/test_transaction_params/part7/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00001.png b/tests/snapshots/nanosp/test_transaction_params/part8/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00002.png b/tests/snapshots/nanosp/test_transaction_params/part8/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00003.png b/tests/snapshots/nanosp/test_transaction_params/part8/00003.png index 70461f08..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00004.png b/tests/snapshots/nanosp/test_transaction_params/part8/00004.png index 7eb20372..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00005.png b/tests/snapshots/nanosp/test_transaction_params/part8/00005.png index 1c035abd..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00006.png b/tests/snapshots/nanosp/test_transaction_params/part8/00006.png index c149ed62..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00007.png b/tests/snapshots/nanosp/test_transaction_params/part8/00007.png index 56fb6671..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00008.png b/tests/snapshots/nanosp/test_transaction_params/part8/00008.png index c7682075..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00009.png b/tests/snapshots/nanosp/test_transaction_params/part8/00009.png index d1eb962c..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00010.png b/tests/snapshots/nanosp/test_transaction_params/part8/00010.png index 11ac632e..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00011.png b/tests/snapshots/nanosp/test_transaction_params/part8/00011.png index 62827380..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00012.png b/tests/snapshots/nanosp/test_transaction_params/part8/00012.png index 68020b16..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00013.png b/tests/snapshots/nanosp/test_transaction_params/part8/00013.png index bff4ff72..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00014.png b/tests/snapshots/nanosp/test_transaction_params/part8/00014.png index c02f5ccb..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00015.png b/tests/snapshots/nanosp/test_transaction_params/part8/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00015.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00016.png b/tests/snapshots/nanosp/test_transaction_params/part8/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00016.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part8/00017.png b/tests/snapshots/nanosp/test_transaction_params/part8/00017.png index cc0bd7b2..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part8/00017.png and b/tests/snapshots/nanosp/test_transaction_params/part8/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00001.png b/tests/snapshots/nanosp/test_transaction_params/part9/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00001.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00002.png b/tests/snapshots/nanosp/test_transaction_params/part9/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00002.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00003.png b/tests/snapshots/nanosp/test_transaction_params/part9/00003.png index 32e37fb8..de527bf7 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00003.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00004.png b/tests/snapshots/nanosp/test_transaction_params/part9/00004.png index 560f9f00..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00004.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00005.png b/tests/snapshots/nanosp/test_transaction_params/part9/00005.png index bb4d12c7..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00005.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00006.png b/tests/snapshots/nanosp/test_transaction_params/part9/00006.png index d1eb962c..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00006.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00007.png b/tests/snapshots/nanosp/test_transaction_params/part9/00007.png index 11ac632e..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00007.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00008.png b/tests/snapshots/nanosp/test_transaction_params/part9/00008.png index 62827380..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00008.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00009.png b/tests/snapshots/nanosp/test_transaction_params/part9/00009.png index 68020b16..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00009.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00010.png b/tests/snapshots/nanosp/test_transaction_params/part9/00010.png index bff4ff72..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00010.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00011.png b/tests/snapshots/nanosp/test_transaction_params/part9/00011.png index c02f5ccb..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00011.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00012.png b/tests/snapshots/nanosp/test_transaction_params/part9/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00012.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00013.png b/tests/snapshots/nanosp/test_transaction_params/part9/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00013.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_params/part9/00014.png b/tests/snapshots/nanosp/test_transaction_params/part9/00014.png index cc0bd7b2..e84e8dfd 100644 Binary files a/tests/snapshots/nanosp/test_transaction_params/part9/00014.png and b/tests/snapshots/nanosp/test_transaction_params/part9/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00001.png b/tests/snapshots/nanosp/test_transaction_refused/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00001.png and b/tests/snapshots/nanosp/test_transaction_refused/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00002.png b/tests/snapshots/nanosp/test_transaction_refused/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00002.png and b/tests/snapshots/nanosp/test_transaction_refused/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00003.png b/tests/snapshots/nanosp/test_transaction_refused/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00003.png and b/tests/snapshots/nanosp/test_transaction_refused/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00004.png b/tests/snapshots/nanosp/test_transaction_refused/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00004.png and b/tests/snapshots/nanosp/test_transaction_refused/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00005.png b/tests/snapshots/nanosp/test_transaction_refused/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00005.png and b/tests/snapshots/nanosp/test_transaction_refused/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00006.png b/tests/snapshots/nanosp/test_transaction_refused/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00006.png and b/tests/snapshots/nanosp/test_transaction_refused/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00007.png b/tests/snapshots/nanosp/test_transaction_refused/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00007.png and b/tests/snapshots/nanosp/test_transaction_refused/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00008.png b/tests/snapshots/nanosp/test_transaction_refused/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00008.png and b/tests/snapshots/nanosp/test_transaction_refused/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00009.png b/tests/snapshots/nanosp/test_transaction_refused/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00009.png and b/tests/snapshots/nanosp/test_transaction_refused/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00010.png b/tests/snapshots/nanosp/test_transaction_refused/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00010.png and b/tests/snapshots/nanosp/test_transaction_refused/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00011.png b/tests/snapshots/nanosp/test_transaction_refused/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00011.png and b/tests/snapshots/nanosp/test_transaction_refused/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00012.png b/tests/snapshots/nanosp/test_transaction_refused/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00012.png and b/tests/snapshots/nanosp/test_transaction_refused/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00013.png b/tests/snapshots/nanosp/test_transaction_refused/00013.png index cc0bd7b2..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00013.png and b/tests/snapshots/nanosp/test_transaction_refused/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00014.png b/tests/snapshots/nanosp/test_transaction_refused/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00014.png and b/tests/snapshots/nanosp/test_transaction_refused/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00015.png b/tests/snapshots/nanosp/test_transaction_refused/00015.png index d9b5efc5..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00015.png and b/tests/snapshots/nanosp/test_transaction_refused/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00016.png b/tests/snapshots/nanosp/test_transaction_refused/00016.png index e84e8dfd..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_refused/00016.png and b/tests/snapshots/nanosp/test_transaction_refused/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00017.png b/tests/snapshots/nanosp/test_transaction_refused/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_refused/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00018.png b/tests/snapshots/nanosp/test_transaction_refused/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_refused/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00019.png b/tests/snapshots/nanosp/test_transaction_refused/00019.png new file mode 100644 index 00000000..de8a2912 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_refused/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_refused/00020.png b/tests/snapshots/nanosp/test_transaction_refused/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_refused/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/00001.png b/tests/snapshots/nanosp/test_transaction_slot/00001.png index 673039ba..d0a5ee96 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00002.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00002.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00013.png index cc0bd7b2..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part0/00015.png and b/tests/snapshots/nanosp/test_transaction_slot/part0/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00021.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00021.png rename to tests/snapshots/nanosp/test_transaction_slot/part0/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part0/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part0/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part0/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part0/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part0/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part1/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part1/00001.png index c99f676e..9ffae7e2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part1/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00008.png index 05df1c8c..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part10/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part10/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part54/00022.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part54/00022.png rename to tests/snapshots/nanosp/test_transaction_slot/part10/00015.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00016.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00016.png new file mode 100644 index 00000000..819d3159 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part10/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part10/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part10/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part10/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part10/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00008.png index 05df1c8c..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00013.png index d3857f37..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00014.png index 936a3da4..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00015.png index afc070e4..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00015.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00016.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00016.png index 1e4be699..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00016.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00017.png index e84e8dfd..4f365818 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part12/00017.png and b/tests/snapshots/nanosp/test_transaction_slot/part12/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00018.png new file mode 100644 index 00000000..ad5b6926 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part12/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00019.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part12/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00020.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00020.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part12/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part12/00021.png b/tests/snapshots/nanosp/test_transaction_slot/part12/00021.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part12/00021.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00008.png index 05df1c8c..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00013.png index d3857f37..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00014.png index a68dcaa7..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00015.png index 1e4be699..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00015.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00016.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00016.png index e84e8dfd..8099d16e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part14/00016.png and b/tests/snapshots/nanosp/test_transaction_slot/part14/00016.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00017.png new file mode 100644 index 00000000..4f365818 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part14/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00018.png new file mode 100644 index 00000000..a68dcaa7 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part14/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part14/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part14/00020.png b/tests/snapshots/nanosp/test_transaction_slot/part14/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part14/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00002.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00002.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00013.png index e2d9cb6f..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part15/00015.png and b/tests/snapshots/nanosp/test_transaction_slot/part15/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00011.png rename to tests/snapshots/nanosp/test_transaction_slot/part15/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00017.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part15/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00018.png new file mode 100644 index 00000000..38b11c55 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part15/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part15/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part15/00020.png b/tests/snapshots/nanosp/test_transaction_slot/part15/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part15/00020.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00002.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00002.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00013.png index 84905b9f..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part2/00015.png and b/tests/snapshots/nanosp/test_transaction_slot/part2/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00011.png rename to tests/snapshots/nanosp/test_transaction_slot/part2/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00017.png new file mode 100644 index 00000000..be855edc Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part2/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part2/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part2/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part2/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part2/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00002.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00002.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00002.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part3/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part3/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part55/00021.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part55/00021.png rename to tests/snapshots/nanosp/test_transaction_slot/part3/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00011.png rename to tests/snapshots/nanosp/test_transaction_slot/part3/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00017.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part3/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part3/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part3/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part3/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part3/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00008.png index 05df1c8c..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00013.png index afc070e4..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part4/00015.png and b/tests/snapshots/nanosp/test_transaction_slot/part4/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00011.png rename to tests/snapshots/nanosp/test_transaction_slot/part4/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00017.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part4/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part4/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part4/00019.png b/tests/snapshots/nanosp/test_transaction_slot/part4/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part4/00019.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00008.png index 05df1c8c..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part6/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part6/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00015.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00015.png new file mode 100644 index 00000000..42cf0b73 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part6/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00011.png rename to tests/snapshots/nanosp/test_transaction_slot/part6/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part6/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part6/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part6/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part6/00018.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00001.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00001.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00001.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00003.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00003.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00003.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00004.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00004.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00004.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00005.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00005.png index d1eb962c..c22f01b2 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00005.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00005.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00006.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00006.png index 11ac632e..5474e7a3 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00006.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00006.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00007.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00007.png index 62827380..69a76097 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00007.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00007.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00008.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00008.png index 68020b16..8065791c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00008.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00008.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00009.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00009.png index bff4ff72..d8a2740e 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00009.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00009.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00010.png index c02f5ccb..4d1a7f73 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00010.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00010.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00011.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00011.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00011.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00012.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00012.png index bbe32c35..37312a69 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00012.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00012.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00013.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00013.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00013.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00014.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanosp/test_transaction_slot/part8/00014.png and b/tests/snapshots/nanosp/test_transaction_slot/part8/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part57/00030.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part57/00030.png rename to tests/snapshots/nanosp/test_transaction_slot/part8/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00010.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00010.png rename to tests/snapshots/nanosp/test_transaction_slot/part8/00016.png diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00017.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part8/00017.png differ diff --git a/tests/snapshots/nanosp/test_transaction_slot/part8/00018.png b/tests/snapshots/nanosp/test_transaction_slot/part8/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanosp/test_transaction_slot/part8/00018.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00002.png b/tests/snapshots/nanox/test_app_mainmenu/00002.png deleted file mode 100644 index 41c60cf0..00000000 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00002.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00003.png b/tests/snapshots/nanox/test_app_mainmenu/00003.png deleted file mode 100644 index 1adff7ee..00000000 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00003.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00000.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00000.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00000.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00001.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00002.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00002.png new file mode 100644 index 00000000..e744535f Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00003.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00003.png new file mode 100644 index 00000000..f167b041 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00004.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00004.png new file mode 100644 index 00000000..86e715d1 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00004.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00005.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00005.png new file mode 100644 index 00000000..c7703726 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00005.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00006.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00006.png new file mode 100644 index 00000000..86e715d1 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00006.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00007.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00007.png new file mode 100644 index 00000000..f167b041 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00007.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00008.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00008.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00008.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00009.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00009.png new file mode 100644 index 00000000..8f31a63d Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00009.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00010.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00010.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00010.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part0/00011.png b/tests/snapshots/nanox/test_app_mainmenu/part0/00011.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part0/00011.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part1/00000.png b/tests/snapshots/nanox/test_app_mainmenu/part1/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part1/00000.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part1/00001.png b/tests/snapshots/nanox/test_app_mainmenu/part1/00001.png new file mode 100644 index 00000000..9ffae7e2 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part1/00001.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part1/00002.png b/tests/snapshots/nanox/test_app_mainmenu/part1/00002.png new file mode 100644 index 00000000..35778e58 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part1/00002.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part1/00003.png b/tests/snapshots/nanox/test_app_mainmenu/part1/00003.png new file mode 100644 index 00000000..402e770b Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part1/00003.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part1/00004.png b/tests/snapshots/nanox/test_app_mainmenu/part1/00004.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part1/00004.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part1/00005.png b/tests/snapshots/nanox/test_app_mainmenu/part1/00005.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part1/00005.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00000.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00000.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00000.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00001.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00001.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00002.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00002.png new file mode 100644 index 00000000..e744535f Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00002.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00003.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00003.png new file mode 100644 index 00000000..f167b041 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00003.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00004.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00004.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00004.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00005.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00005.png new file mode 100644 index 00000000..6f0ef3bb Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00005.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00006.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00006.png new file mode 100644 index 00000000..c9a888e0 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00006.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00007.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00007.png new file mode 100644 index 00000000..cd1d5547 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00007.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00008.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00008.png new file mode 100644 index 00000000..57999c44 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00008.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00009.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00009.png new file mode 100644 index 00000000..155ba686 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00009.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00010.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00010.png new file mode 100644 index 00000000..9e771529 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00010.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00011.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00011.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/part2/00012.png b/tests/snapshots/nanox/test_app_mainmenu/part2/00012.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/part2/00012.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00000.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00002.png new file mode 100644 index 00000000..f7921677 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00003.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00001.png new file mode 100644 index 00000000..eb38195b Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00002.png new file mode 100644 index 00000000..edfb974f Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part15/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part15/00002.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00004.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00005.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00005.png new file mode 100644 index 00000000..75f661ea Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00005.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00006.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00006.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00007.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00007.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00008.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00008.png new file mode 100644 index 00000000..658d96bb Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00008.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00009.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00009.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00009.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00010.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00010.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00010.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00011.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00011.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00019.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00012.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00013.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00013.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00013.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00014.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00014.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part59/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00015.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part59/00014.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00013.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00013.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00016.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00017.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00017.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00017.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00018.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00018.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00019.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00021.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00021.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00021.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00022.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00022.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00022.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00023.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00023.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00024.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00024.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00025.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00025.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00025.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00026.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00026.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00026.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00027.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00027.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00027.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00028.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00028.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00028.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00029.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00029.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part1/00029.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00001.png new file mode 100644 index 00000000..ab73ea7b Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00002.png new file mode 100644 index 00000000..ff86b93e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00003.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00004.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00004.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00005.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00005.png new file mode 100644 index 00000000..75f661ea Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00005.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00006.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00006.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00007.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00007.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00008.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00008.png new file mode 100644 index 00000000..75fafce4 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00008.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00009.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00009.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00009.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00010.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00010.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00010.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00011.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00011.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00011.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00012.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00012.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00012.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00013.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00013.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00013.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00014.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00014.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00015.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00015.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00015.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00016.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00016.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00016.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00017.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00017.png new file mode 100644 index 00000000..94fa1038 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00017.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00018.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00018.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00019.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part2/00020.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00001.png new file mode 100644 index 00000000..037f08ae Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00002.png new file mode 100644 index 00000000..cedaf45b Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00003.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00004.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00004.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00005.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00005.png new file mode 100644 index 00000000..57f45aba Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00005.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00006.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00006.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00007.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00007.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00008.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00008.png new file mode 100644 index 00000000..e6f1ce0f Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00008.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00009.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00009.png new file mode 100644 index 00000000..407e93cf Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00009.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00010.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00010.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00010.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00011.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00011.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00011.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00012.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00012.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00012.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00013.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00013.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00013.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00014.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00014.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00015.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00015.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00015.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00016.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00016.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00016.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00017.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00017.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00017.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00018.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00018.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00019.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00019.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00020.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00020.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00021.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00021.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part3/00021.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00001.png new file mode 100644 index 00000000..d781cb30 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00002.png new file mode 100644 index 00000000..4d02204f Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00002.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00004.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00005.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00005.png new file mode 100644 index 00000000..57f45aba Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00005.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00006.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00006.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00007.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00007.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00008.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00008.png new file mode 100644 index 00000000..2e7a9c02 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00008.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00009.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00009.png new file mode 100644 index 00000000..407e93cf Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00009.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00010.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00010.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00010.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00011.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00011.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00011.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00012.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00012.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00018.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00013.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00014.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00014.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00015.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00015.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00015.png differ diff --git a/tests/snapshots/nanosp/test_transaction_manifest/part60/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00016.png similarity index 100% rename from tests/snapshots/nanosp/test_transaction_manifest/part60/00020.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00023.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00023.png rename to tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00017.png diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00018.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00018.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00019.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00019.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00020.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00020.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00021.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00021.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part4/00021.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00001.png new file mode 100644 index 00000000..1d53f522 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00002.png new file mode 100644 index 00000000..18153639 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00003.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00004.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00004.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00005.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00005.png new file mode 100644 index 00000000..d1a71de0 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00005.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00006.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00006.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00007.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00007.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00008.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00008.png new file mode 100644 index 00000000..7e0fbecb Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00008.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00009.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00009.png new file mode 100644 index 00000000..2d840c0e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00009.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00010.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00010.png new file mode 100644 index 00000000..830a7e08 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00010.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00011.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00011.png new file mode 100644 index 00000000..66d10818 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00011.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00012.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00012.png new file mode 100644 index 00000000..bdae02ba Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00012.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00013.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00013.png new file mode 100644 index 00000000..e3a0cc5f Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00013.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00014.png new file mode 100644 index 00000000..99a35962 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00014.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00015.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00015.png new file mode 100644 index 00000000..0a823482 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00015.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00016.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00016.png new file mode 100644 index 00000000..1e6fd923 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00016.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00017.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00017.png new file mode 100644 index 00000000..2a35fda1 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00017.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00018.png new file mode 100644 index 00000000..b1745edf Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00018.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00019.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00019.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00020.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00020.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00021.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00021.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00021.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00022.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00022.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00022.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00023.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00023.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00023.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00024.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00024.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00024.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00025.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00025.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00025.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00026.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00026.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00026.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00027.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00027.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00027.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00028.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00028.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00028.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00029.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00029.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00029.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00030.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00030.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part5/00030.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00000.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00000.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00001.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00001.png new file mode 100644 index 00000000..4743ee1e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00001.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00002.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00002.png new file mode 100644 index 00000000..90fa664d Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00002.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00003.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00003.png new file mode 100644 index 00000000..f962a9f6 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00003.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00004.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00004.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00004.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00005.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00005.png new file mode 100644 index 00000000..d1a71de0 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00005.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00006.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00006.png new file mode 100644 index 00000000..ee49524c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00006.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00007.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00007.png new file mode 100644 index 00000000..0334dd90 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00007.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00008.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00008.png new file mode 100644 index 00000000..7e0fbecb Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00008.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00009.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00009.png new file mode 100644 index 00000000..2d840c0e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00009.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00010.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00010.png new file mode 100644 index 00000000..830a7e08 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00010.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00011.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00011.png new file mode 100644 index 00000000..66d10818 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00011.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00012.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00012.png new file mode 100644 index 00000000..bdae02ba Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00012.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00013.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00013.png new file mode 100644 index 00000000..e3a0cc5f Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00013.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00014.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00014.png new file mode 100644 index 00000000..99a35962 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00014.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00015.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00015.png new file mode 100644 index 00000000..0a823482 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00015.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00016.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00016.png new file mode 100644 index 00000000..1e6fd923 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00016.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00017.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00017.png new file mode 100644 index 00000000..2a35fda1 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00017.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00018.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00018.png new file mode 100644 index 00000000..b0c66682 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00018.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00019.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00019.png new file mode 100644 index 00000000..98ba14cf Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00019.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00020.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00020.png new file mode 100644 index 00000000..32be4a8a Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00020.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00021.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00021.png new file mode 100644 index 00000000..d3fef119 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00021.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00022.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00022.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00022.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00023.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00023.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00023.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00024.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00024.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00024.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00025.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00025.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00025.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00026.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00026.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00026.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00027.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00027.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00027.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00028.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00028.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00028.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00029.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00029.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00029.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00030.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00030.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00030.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00031.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00031.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00031.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00032.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00032.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00032.png differ diff --git a/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00033.png b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00033.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_arbitrary_transaction_signing_expert/part6/00033.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part0/00000.png b/tests/snapshots/nanox/test_message_normal/part0/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part0/00000.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part0/00001.png b/tests/snapshots/nanox/test_message_normal/part0/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part0/00002.png b/tests/snapshots/nanox/test_message_normal/part0/00002.png new file mode 100644 index 00000000..0f36734e Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part0/00003.png b/tests/snapshots/nanox/test_message_normal/part0/00003.png new file mode 100644 index 00000000..24b411d6 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part0/00004.png b/tests/snapshots/nanox/test_message_normal/part0/00004.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part0/00004.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part0/00005.png b/tests/snapshots/nanox/test_message_normal/part0/00005.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part0/00005.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00000.png b/tests/snapshots/nanox/test_message_normal/part1/00000.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00000.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00001.png b/tests/snapshots/nanox/test_message_normal/part1/00001.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00001.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00002.png b/tests/snapshots/nanox/test_message_normal/part1/00002.png new file mode 100644 index 00000000..f7921677 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00002.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00003.png b/tests/snapshots/nanox/test_message_normal/part1/00003.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00003.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00004.png b/tests/snapshots/nanox/test_message_normal/part1/00004.png new file mode 100644 index 00000000..8b16b4d9 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00004.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00005.png b/tests/snapshots/nanox/test_message_normal/part1/00005.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00005.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part1/00006.png b/tests/snapshots/nanox/test_message_normal/part1/00006.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part1/00006.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00000.png b/tests/snapshots/nanox/test_message_normal/part2/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00000.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00001.png b/tests/snapshots/nanox/test_message_normal/part2/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00001.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00002.png b/tests/snapshots/nanox/test_message_normal/part2/00002.png new file mode 100644 index 00000000..fc4e7e0d Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00002.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00003.png b/tests/snapshots/nanox/test_message_normal/part2/00003.png new file mode 100644 index 00000000..b6b0217c Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00003.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00004.png b/tests/snapshots/nanox/test_message_normal/part2/00004.png new file mode 100644 index 00000000..8b16b4d9 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00004.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00005.png b/tests/snapshots/nanox/test_message_normal/part2/00005.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00005.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00006.png b/tests/snapshots/nanox/test_message_normal/part2/00006.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00006.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part2/00007.png b/tests/snapshots/nanox/test_message_normal/part2/00007.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part2/00007.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00000.png b/tests/snapshots/nanox/test_message_normal/part3/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00000.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00001.png b/tests/snapshots/nanox/test_message_normal/part3/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00001.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00002.png b/tests/snapshots/nanox/test_message_normal/part3/00002.png new file mode 100644 index 00000000..0f36734e Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00002.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00003.png b/tests/snapshots/nanox/test_message_normal/part3/00003.png new file mode 100644 index 00000000..24b411d6 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00003.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00004.png b/tests/snapshots/nanox/test_message_normal/part3/00004.png new file mode 100644 index 00000000..94fa1038 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00004.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00005.png b/tests/snapshots/nanox/test_message_normal/part3/00005.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00005.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part3/00006.png b/tests/snapshots/nanox/test_message_normal/part3/00006.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part3/00006.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00000.png b/tests/snapshots/nanox/test_message_normal/part4/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00000.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00001.png b/tests/snapshots/nanox/test_message_normal/part4/00001.png new file mode 100644 index 00000000..d3179deb Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00001.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00002.png b/tests/snapshots/nanox/test_message_normal/part4/00002.png new file mode 100644 index 00000000..fc4e7e0d Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00002.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00003.png b/tests/snapshots/nanox/test_message_normal/part4/00003.png new file mode 100644 index 00000000..b6b0217c Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00003.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00004.png b/tests/snapshots/nanox/test_message_normal/part4/00004.png new file mode 100644 index 00000000..8b16b4d9 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00004.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00005.png b/tests/snapshots/nanox/test_message_normal/part4/00005.png new file mode 100644 index 00000000..2a16d649 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00005.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00006.png b/tests/snapshots/nanox/test_message_normal/part4/00006.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00006.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part4/00007.png b/tests/snapshots/nanox/test_message_normal/part4/00007.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part4/00007.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part5/00000.png b/tests/snapshots/nanox/test_message_normal/part5/00000.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part5/00000.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part5/00001.png b/tests/snapshots/nanox/test_message_normal/part5/00001.png new file mode 100644 index 00000000..f7921677 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part5/00001.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part5/00002.png b/tests/snapshots/nanox/test_message_normal/part5/00002.png new file mode 100644 index 00000000..8472e5d9 Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part5/00002.png differ diff --git a/tests/snapshots/nanox/test_message_normal/part5/00003.png b/tests/snapshots/nanox/test_message_normal/part5/00003.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_message_normal/part5/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00001.png b/tests/snapshots/nanox/test_transaction_expert/part1/00001.png index 5b962ee9..262b4b5e 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00001.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00002.png b/tests/snapshots/nanox/test_transaction_expert/part1/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00002.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00003.png b/tests/snapshots/nanox/test_transaction_expert/part1/00003.png index 81263f9e..de527bf7 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00003.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00004.png b/tests/snapshots/nanox/test_transaction_expert/part1/00004.png index 4b4eb598..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00004.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00005.png b/tests/snapshots/nanox/test_transaction_expert/part1/00005.png index d8a2740e..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00005.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00006.png b/tests/snapshots/nanox/test_transaction_expert/part1/00006.png index 4d1a7f73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00006.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00007.png b/tests/snapshots/nanox/test_transaction_expert/part1/00007.png index 38f03f75..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00007.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00008.png b/tests/snapshots/nanox/test_transaction_expert/part1/00008.png index 37312a69..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00008.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00009.png b/tests/snapshots/nanox/test_transaction_expert/part1/00009.png index 163e4981..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00009.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00010.png b/tests/snapshots/nanox/test_transaction_expert/part1/00010.png index b5f70a2c..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00010.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00011.png b/tests/snapshots/nanox/test_transaction_expert/part1/00011.png index 42cf0b73..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00011.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00012.png b/tests/snapshots/nanox/test_transaction_expert/part1/00012.png index 819d3159..2a16d649 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00012.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00013.png b/tests/snapshots/nanox/test_transaction_expert/part1/00013.png index 2a16d649..14c87a49 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00013.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00014.png b/tests/snapshots/nanox/test_transaction_expert/part1/00014.png index 14c87a49..1e4be699 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00014.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part1/00015.png b/tests/snapshots/nanox/test_transaction_expert/part1/00015.png index 1e4be699..e84e8dfd 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part1/00015.png and b/tests/snapshots/nanox/test_transaction_expert/part1/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00001.png b/tests/snapshots/nanox/test_transaction_expert/part2/00001.png index 5b962ee9..262b4b5e 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00001.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00002.png b/tests/snapshots/nanox/test_transaction_expert/part2/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00002.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00003.png b/tests/snapshots/nanox/test_transaction_expert/part2/00003.png index 81263f9e..de527bf7 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00003.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00004.png b/tests/snapshots/nanox/test_transaction_expert/part2/00004.png index 4b4eb598..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00004.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00005.png b/tests/snapshots/nanox/test_transaction_expert/part2/00005.png index d8a2740e..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00005.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00006.png b/tests/snapshots/nanox/test_transaction_expert/part2/00006.png index 4d1a7f73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00006.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00007.png b/tests/snapshots/nanox/test_transaction_expert/part2/00007.png index 38f03f75..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00007.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00008.png b/tests/snapshots/nanox/test_transaction_expert/part2/00008.png index 37312a69..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00008.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00009.png b/tests/snapshots/nanox/test_transaction_expert/part2/00009.png index 163e4981..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00009.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00010.png b/tests/snapshots/nanox/test_transaction_expert/part2/00010.png index b5f70a2c..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00010.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00011.png b/tests/snapshots/nanox/test_transaction_expert/part2/00011.png index 42cf0b73..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00011.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00012.png b/tests/snapshots/nanox/test_transaction_expert/part2/00012.png index 819d3159..94fa1038 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00012.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00013.png b/tests/snapshots/nanox/test_transaction_expert/part2/00013.png index 94fa1038..14c87a49 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00013.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00014.png b/tests/snapshots/nanox/test_transaction_expert/part2/00014.png index 14c87a49..1e4be699 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00014.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_expert/part2/00015.png b/tests/snapshots/nanox/test_transaction_expert/part2/00015.png index 1e4be699..e84e8dfd 100644 Binary files a/tests/snapshots/nanox/test_transaction_expert/part2/00015.png and b/tests/snapshots/nanox/test_transaction_expert/part2/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00001.png new file mode 100644 index 00000000..a10bf897 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00009.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00010.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00011.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00027.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00027.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00013.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00014.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part16/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part16/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00022.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00022.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00001.png new file mode 100644 index 00000000..a10bf897 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00009.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00010.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00011.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00012.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00013.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00014.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00015.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00016.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.01-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00001.png new file mode 100644 index 00000000..3d59a433 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00009.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00010.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00011.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00013.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00014.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part17/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00031.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00031.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00001.png new file mode 100644 index 00000000..3d59a433 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00003.png new file mode 100644 index 00000000..d1930d7a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00004.png new file mode 100644 index 00000000..a4d302e5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00005.png new file mode 100644 index 00000000..c22f01b2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00006.png new file mode 100644 index 00000000..5474e7a3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00007.png new file mode 100644 index 00000000..69a76097 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00008.png new file mode 100644 index 00000000..8065791c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00009.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00010.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00011.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00012.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00013.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00014.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00015.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00016.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.02-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00001.png new file mode 100644 index 00000000..262b4b5e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00003.png new file mode 100644 index 00000000..de527bf7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part18/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00001.png new file mode 100644 index 00000000..262b4b5e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00003.png new file mode 100644 index 00000000..de527bf7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FA.03-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00001.png new file mode 100644 index 00000000..024c5d5d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00003.png new file mode 100644 index 00000000..b2da9ff2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00004.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00001.png new file mode 100644 index 00000000..024c5d5d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00003.png new file mode 100644 index 00000000..81dbe50c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00004.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.01-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00001.png new file mode 100644 index 00000000..5b23ff70 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00004.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00017.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00001.png new file mode 100644 index 00000000..5b23ff70 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00004.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.02-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00001.png new file mode 100644 index 00000000..b2e52410 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00004.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00005.png new file mode 100644 index 00000000..b2da9ff2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00006.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00018.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00018.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00001.png new file mode 100644 index 00000000..b2e52410 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00004.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00005.png new file mode 100644 index 00000000..81dbe50c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00006.png new file mode 100644 index 00000000..b44c2e05 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FT.03-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00001.png new file mode 100644 index 00000000..67261c3f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00006.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part20/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part20/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00001.png new file mode 100644 index 00000000..67261c3f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00006.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00001.png new file mode 100644 index 00000000..72875891 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00004.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00001.png new file mode 100644 index 00000000..72875891 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00004.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/FUSD.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00001.png new file mode 100644 index 00000000..fb3206fe Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00002.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00003.png new file mode 100644 index 00000000..4817e4a5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00004.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00008.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00011.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00012.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00001.png new file mode 100644 index 00000000..fb3206fe Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00003.png new file mode 100644 index 00000000..31003174 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00004.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.01-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00001.png new file mode 100644 index 00000000..2be9f2a2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00002.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00003.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00006.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00013.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00014.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00001.png new file mode 100644 index 00000000..2be9f2a2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00003.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00005.png new file mode 100644 index 00000000..be858969 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00006.png new file mode 100644 index 00000000..8d219079 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.02-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00001.png new file mode 100644 index 00000000..00acffb3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part26/00002.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part26/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00003.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00005.png new file mode 100644 index 00000000..4817e4a5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00006.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00006.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00013.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00014.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00001.png new file mode 100644 index 00000000..00acffb3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00003.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00004.png new file mode 100644 index 00000000..5d9aef81 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00005.png new file mode 100644 index 00000000..31003174 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00006.png new file mode 100644 index 00000000..01ff34a1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/NFT.03-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00001.png new file mode 100644 index 00000000..d5fde6f9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00006.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00001.png new file mode 100644 index 00000000..d5fde6f9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00006.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00001.png new file mode 100644 index 00000000..48cfa5ac Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00005.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00019.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part21/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part21/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00001.png new file mode 100644 index 00000000..48cfa5ac Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00005.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.02-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part29/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part29/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00015.png new file mode 100644 index 00000000..f9e9a082 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00016.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00017.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00018.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00019.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00018.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00019.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00020.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00021.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part22/00022.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00022.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00023.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00024.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00025.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00026.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Mainnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part24/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00015.png new file mode 100644 index 00000000..f9e9a082 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00016.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00017.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00018.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00019.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00020.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00021.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00022.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00023.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00024.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00025.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00026.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-1-Testnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00015.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00016.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00017.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00018.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00021.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00018.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00019.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00020.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part23/00021.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00021.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00022.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00022.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00022.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00023.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00024.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00025.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Mainnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00015.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00016.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00017.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00018.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00019.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00020.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00021.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00022.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00023.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00024.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00025.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-2-Testnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part30/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part30/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00015.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00016.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00017.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00018.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00019.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00020.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00027.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00027.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00021.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00022.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00023.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00024.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00024.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00024.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00025.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00025.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00025.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00026.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00027.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00027.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00027.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00028.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00028.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Mainnet/00028.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00007.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00007.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00008.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00009.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00009.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00015.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00016.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00017.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00018.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00019.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00020.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00021.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00022.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00023.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00024.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00025.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00026.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00027.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00027.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00027.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00028.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00028.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-3-Testnet/00028.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part31/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part31/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00007.png new file mode 100644 index 00000000..13d4f841 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00008.png new file mode 100644 index 00000000..95053039 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00009.png new file mode 100644 index 00000000..14536a99 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00015.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00016.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00017.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00018.png new file mode 100644 index 00000000..6deb26c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00019.png new file mode 100644 index 00000000..4e33ad1f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00020.png new file mode 100644 index 00000000..21fc6be6 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00021.png new file mode 100644 index 00000000..480251b0 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00022.png new file mode 100644 index 00000000..f25e156a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00023.png new file mode 100644 index 00000000..ad8d57bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00024.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00025.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00026.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00027.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00027.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00028.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00028.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00028.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00029.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00029.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00029.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00030.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00030.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part25/00030.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00030.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00031.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00031.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00031.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00031.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00032.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00032.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00032.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00033.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00033.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00033.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00034.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00034.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Mainnet/00034.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00004.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00007.png new file mode 100644 index 00000000..13d4f841 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00008.png new file mode 100644 index 00000000..95053039 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00009.png new file mode 100644 index 00000000..14536a99 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00010.png new file mode 100644 index 00000000..f82bf8aa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00011.png new file mode 100644 index 00000000..8c20afff Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00012.png new file mode 100644 index 00000000..4ff09bcb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00013.png new file mode 100644 index 00000000..112ba252 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00015.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00016.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00017.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00018.png new file mode 100644 index 00000000..6deb26c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00019.png new file mode 100644 index 00000000..4e33ad1f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00020.png new file mode 100644 index 00000000..21fc6be6 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00021.png new file mode 100644 index 00000000..480251b0 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00022.png new file mode 100644 index 00000000..f25e156a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00023.png new file mode 100644 index 00000000..ad8d57bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00024.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00025.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00026.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00027.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00027.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00027.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00028.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00028.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00028.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00029.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00029.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00029.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00030.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00030.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00030.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00031.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00031.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00031.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00032.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00032.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00032.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00033.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00033.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00033.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00034.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00034.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-4-Testnet/00034.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part32/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part32/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00005.png new file mode 100644 index 00000000..29ee492c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00007.png new file mode 100644 index 00000000..13d4f841 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00008.png new file mode 100644 index 00000000..95053039 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00009.png new file mode 100644 index 00000000..14536a99 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00010.png new file mode 100644 index 00000000..f82bf8aa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00011.png new file mode 100644 index 00000000..8c20afff Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00012.png new file mode 100644 index 00000000..4ff09bcb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00013.png new file mode 100644 index 00000000..112ba252 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00015.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00016.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00017.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00018.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00019.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00020.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00021.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00022.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00023.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00023.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00024.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00025.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part19/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00026.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part19/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00026.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00027.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00015.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00027.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00028.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00028.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00028.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00029.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00029.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00029.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00030.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00030.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Mainnet/00030.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00005.png new file mode 100644 index 00000000..29ee492c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00007.png new file mode 100644 index 00000000..13d4f841 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00008.png new file mode 100644 index 00000000..95053039 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00009.png new file mode 100644 index 00000000..14536a99 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00010.png new file mode 100644 index 00000000..f82bf8aa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00011.png new file mode 100644 index 00000000..8c20afff Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00012.png new file mode 100644 index 00000000..4ff09bcb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00013.png new file mode 100644 index 00000000..112ba252 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00015.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00016.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00017.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00018.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00019.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00020.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00021.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00022.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00023.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00024.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00025.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00026.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00026.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00026.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00027.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00027.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00027.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00028.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00028.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00028.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00029.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00029.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00029.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00030.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00030.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.03-Testnet/00030.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part33/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00017.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00008.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part34/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00005.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00006.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00007.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00008.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00009.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00010.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00012.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00013.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part27/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00015.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00015.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00015.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00016.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00001.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00001.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00001.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00005.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00006.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00007.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00008.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00009.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00010.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00011.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00012.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00013.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00014.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00015.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00016.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-2-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00001.png new file mode 100644 index 00000000..0aa992b4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part35/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part35/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00005.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00006.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00007.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00008.png new file mode 100644 index 00000000..6deb26c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00009.png new file mode 100644 index 00000000..4e33ad1f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00010.png new file mode 100644 index 00000000..21fc6be6 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00011.png new file mode 100644 index 00000000..480251b0 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00012.png new file mode 100644 index 00000000..f25e156a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00013.png new file mode 100644 index 00000000..ad8d57bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00014.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00015.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00016.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00007.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00018.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00019.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00020.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00020.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00020.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part28/00021.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00021.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00022.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00023.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00024.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Mainnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00001.png new file mode 100644 index 00000000..0aa992b4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00005.png new file mode 100644 index 00000000..e76e7526 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00006.png new file mode 100644 index 00000000..c19651e7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00007.png new file mode 100644 index 00000000..8c8b5db2 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00008.png new file mode 100644 index 00000000..6deb26c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00009.png new file mode 100644 index 00000000..4e33ad1f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00010.png new file mode 100644 index 00000000..21fc6be6 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00011.png new file mode 100644 index 00000000..480251b0 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00012.png new file mode 100644 index 00000000..f25e156a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00013.png new file mode 100644 index 00000000..ad8d57bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00014.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00015.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00016.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00017.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00018.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00019.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00020.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00021.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00022.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00023.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00024.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-3-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00001.png new file mode 100644 index 00000000..0aa992b4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part36/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part36/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00005.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00006.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00007.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00008.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00009.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00010.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00011.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00012.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00013.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00014.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00015.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00016.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part2/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00016.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00017.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00017.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00018.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00001.png new file mode 100644 index 00000000..0aa992b4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00005.png new file mode 100644 index 00000000..96499b86 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00006.png new file mode 100644 index 00000000..43978d3d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00007.png new file mode 100644 index 00000000..30e61d27 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00008.png new file mode 100644 index 00000000..3a20eccd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00009.png new file mode 100644 index 00000000..90434b76 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00010.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00011.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00012.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00013.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00014.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00015.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00016.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00017.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00018.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.04-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00001.png new file mode 100644 index 00000000..9c58d43d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part37/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part37/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00001.png new file mode 100644 index 00000000..9c58d43d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00001.png new file mode 100644 index 00000000..9c58d43d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part38/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00001.png new file mode 100644 index 00000000..9c58d43d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.05-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00001.png new file mode 100644 index 00000000..9afc5b3b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part39/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00001.png new file mode 100644 index 00000000..9afc5b3b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00001.png new file mode 100644 index 00000000..9afc5b3b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00001.png new file mode 100644 index 00000000..9afc5b3b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.06-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part40/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part40/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part41/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part41/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part3/00021.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00001.png new file mode 100644 index 00000000..0fe63a5f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.07-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00001.png new file mode 100644 index 00000000..79ea8425 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part4/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00001.png new file mode 100644 index 00000000..79ea8425 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00001.png new file mode 100644 index 00000000..79ea8425 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part42/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part42/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00013.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00001.png new file mode 100644 index 00000000..79ea8425 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.08-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00001.png new file mode 100644 index 00000000..570ccf0b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00008.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00011.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00011.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00001.png new file mode 100644 index 00000000..570ccf0b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.09-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part43/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part43/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00001.png new file mode 100644 index 00000000..bbef096f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.10-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00001.png new file mode 100644 index 00000000..f0960fe5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part46/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part46/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00022.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00001.png new file mode 100644 index 00000000..f0960fe5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-1-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00001.png new file mode 100644 index 00000000..f0960fe5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part48/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part48/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part47/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part47/00012.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00001.png new file mode 100644 index 00000000..f0960fe5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.11-2-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00001.png new file mode 100644 index 00000000..e5cc8ff9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part49/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part49/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00009.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00021.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00001.png new file mode 100644 index 00000000..e5cc8ff9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-1-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00001.png new file mode 100644 index 00000000..e5cc8ff9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part5/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00009.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00001.png new file mode 100644 index 00000000..e5cc8ff9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00005.png new file mode 100644 index 00000000..a4cdc742 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.12-2-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00001.png new file mode 100644 index 00000000..17f25f76 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part50/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part44/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00005.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part44/00005.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00005.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00009.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00001.png new file mode 100644 index 00000000..17f25f76 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00005.png new file mode 100644 index 00000000..ed942ba7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.13-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00001.png new file mode 100644 index 00000000..13c1c82d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part45/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00006.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part45/00006.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00006.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00022.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00013.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00022.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00013.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00014.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00011.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00014.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00001.png new file mode 100644 index 00000000..13c1c82d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00005.png new file mode 100644 index 00000000..182c7bc3 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00006.png new file mode 100644 index 00000000..ed942ba7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.14-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00001.png new file mode 100644 index 00000000..68a9acaa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part52/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part52/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00005.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00009.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00021.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00021.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00013.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00001.png new file mode 100644 index 00000000..68a9acaa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00005.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.15-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00001.png new file mode 100644 index 00000000..9076e679 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part53/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part53/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00005.png new file mode 100644 index 00000000..e396bc64 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00009.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00030.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00012.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00030.png rename to tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00012.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00013.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00001.png new file mode 100644 index 00000000..9076e679 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00005.png new file mode 100644 index 00000000..e396bc64 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/SCO.16-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00001.png new file mode 100644 index 00000000..9f584f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part54/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00001.png new file mode 100644 index 00000000..9f584f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.01-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00001.png new file mode 100644 index 00000000..7e23f8fe Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part55/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00001.png new file mode 100644 index 00000000..7e23f8fe Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part56/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00005.png new file mode 100644 index 00000000..08cd3e1d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00007.png new file mode 100644 index 00000000..13d4f841 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00008.png new file mode 100644 index 00000000..95053039 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00009.png new file mode 100644 index 00000000..14536a99 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00010.png new file mode 100644 index 00000000..f82bf8aa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00011.png new file mode 100644 index 00000000..8c20afff Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00012.png new file mode 100644 index 00000000..4ff09bcb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00013.png new file mode 100644 index 00000000..112ba252 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00015.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00016.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00017.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00018.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00019.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00020.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00021.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00014.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00021.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00022.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00023.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00024.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00025.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Mainnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00001.png new file mode 100644 index 00000000..efccfe60 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00005.png new file mode 100644 index 00000000..08cd3e1d Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00006.png new file mode 100644 index 00000000..08542c2a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00007.png new file mode 100644 index 00000000..13d4f841 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00008.png new file mode 100644 index 00000000..95053039 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00009.png new file mode 100644 index 00000000..14536a99 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00010.png new file mode 100644 index 00000000..f82bf8aa Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00011.png new file mode 100644 index 00000000..8c20afff Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00012.png new file mode 100644 index 00000000..4ff09bcb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00013.png new file mode 100644 index 00000000..112ba252 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00014.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00015.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00016.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00017.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00018.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00018.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00019.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00019.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00020.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00020.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00021.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00021.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00022.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00022.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00022.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00023.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00023.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00023.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00024.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00024.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00024.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00025.png b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00025.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.06-Testnet/00025.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00001.png new file mode 100644 index 00000000..8b0814a5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part57/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00010.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00001.png new file mode 100644 index 00000000..8b0814a5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.08-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00001.png new file mode 100644 index 00000000..d50c53c8 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part58/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part58/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00020.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00020.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00001.png new file mode 100644 index 00000000..d50c53c8 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.09-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00001.png new file mode 100644 index 00000000..1a98771b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part59/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00010.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00009.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00010.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00001.png new file mode 100644 index 00000000..1a98771b Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.10-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00001.png new file mode 100644 index 00000000..839e2bf7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part6/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00001.png new file mode 100644 index 00000000..839e2bf7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.11-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00001.png new file mode 100644 index 00000000..323ddb37 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part60/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00006.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00009.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00010.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00001.png new file mode 100644 index 00000000..323ddb37 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00006.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.12-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part7/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.13-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part8/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part8/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.14-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00001.png new file mode 100644 index 00000000..42d677ac Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00002.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part9/00002.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00002.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/part11/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00003.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part11/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00003.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00004.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00005.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00010.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00013.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00014.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Mainnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00001.png new file mode 100644 index 00000000..42d677ac Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00003.png new file mode 100644 index 00000000..1cdddc8a Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00004.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00005.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00006.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00007.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00008.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00009.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00010.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00011.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00012.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00013.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00014.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00015.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00016.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00017.png b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00017.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.16-Testnet/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00001.png new file mode 100644 index 00000000..48cfa5ac Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00005.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00009.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00012.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00013.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Mainnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00001.png new file mode 100644 index 00000000..48cfa5ac Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00003.png new file mode 100644 index 00000000..363bf8bd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00004.png new file mode 100644 index 00000000..1ba2af08 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00005.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00006.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00007.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00008.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00009.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00010.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00011.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00012.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00013.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00014.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00016.png b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00016.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.17-Testnet/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00001.png new file mode 100644 index 00000000..a1bc989e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00001.png new file mode 100644 index 00000000..a1bc989e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.19-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00001.png new file mode 100644 index 00000000..b34e9449 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00001.png new file mode 100644 index 00000000..b34e9449 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.20-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00001.png new file mode 100644 index 00000000..634b35ed Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00001.png new file mode 100644 index 00000000..634b35ed Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.21-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00001.png new file mode 100644 index 00000000..7fd8b326 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00001.png new file mode 100644 index 00000000..7fd8b326 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.22-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00001.png new file mode 100644 index 00000000..854badf5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.23-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00001.png new file mode 100644 index 00000000..0f0d32d4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00003.png new file mode 100644 index 00000000..0bb49997 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.24-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00001.png new file mode 100644 index 00000000..9076e679 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00003.png new file mode 100644 index 00000000..e396bc64 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00007.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00010.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00011.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00001.png new file mode 100644 index 00000000..9076e679 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00003.png new file mode 100644 index 00000000..e396bc64 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00004.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00005.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00006.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00007.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00008.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00009.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00010.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00011.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00012.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00013.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00014.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TH.25-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00001.png new file mode 100644 index 00000000..31f90e67 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00006.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00009.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00010.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00001.png new file mode 100644 index 00000000..31f90e67 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00006.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00001.png new file mode 100644 index 00000000..334a79a9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00003.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/nanox/test_transaction_manifest/part51/00003.png rename to tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00004.png diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00008.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00011.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00012.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00001.png new file mode 100644 index 00000000..334a79a9 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00003.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00004.png new file mode 100644 index 00000000..949ed1bc Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/TS.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00001.png new file mode 100644 index 00000000..81f7385f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00006.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00009.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00010.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00001.png new file mode 100644 index 00000000..81f7385f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00003.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00004.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00005.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00006.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00007.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00008.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00009.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00010.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00011.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00013.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.01-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00001.png new file mode 100644 index 00000000..25d36e7c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00002.png new file mode 100644 index 00000000..5481d5da Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00003.png new file mode 100644 index 00000000..ab6f1668 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00004.png new file mode 100644 index 00000000..30300a5c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00008.png new file mode 100644 index 00000000..1030e3e1 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00011.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00012.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Mainnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00000.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00000.png new file mode 100644 index 00000000..3e327861 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00000.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00001.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00001.png new file mode 100644 index 00000000..25d36e7c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00002.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00002.png new file mode 100644 index 00000000..9badf1a4 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00003.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00003.png new file mode 100644 index 00000000..ab6f1668 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00004.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00004.png new file mode 100644 index 00000000..bd9d1bfb Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00005.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00005.png new file mode 100644 index 00000000..d8a2740e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00006.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00006.png new file mode 100644 index 00000000..4d1a7f73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00007.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00007.png new file mode 100644 index 00000000..38f03f75 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00008.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00008.png new file mode 100644 index 00000000..21b1ee21 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00009.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00009.png new file mode 100644 index 00000000..163e4981 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00010.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00010.png new file mode 100644 index 00000000..b5f70a2c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00011.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00011.png new file mode 100644 index 00000000..3df973c5 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00012.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00012.png new file mode 100644 index 00000000..bcbf619c Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00013.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00013.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00014.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00014.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00015.png b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00015.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_manifest/USDC.02-Testnet/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part1/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part1/00001.png deleted file mode 100644 index 1f18d3ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part1/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part10/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part10/00001.png deleted file mode 100644 index b130567a..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part10/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part13/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part13/00001.png deleted file mode 100644 index f0aa3aad..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part13/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part17/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part17/00001.png deleted file mode 100644 index 340d4c11..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part17/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part18/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part18/00001.png deleted file mode 100644 index 5f62f4aa..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part18/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part2/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part2/00001.png deleted file mode 100644 index 6e13ea90..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part2/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part22/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part22/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part22/00015.png b/tests/snapshots/nanox/test_transaction_manifest/part22/00015.png deleted file mode 100644 index ec3d9358..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part22/00015.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part23/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part23/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part23/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part24/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part24/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00015.png b/tests/snapshots/nanox/test_transaction_manifest/part24/00015.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part24/00015.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00016.png b/tests/snapshots/nanox/test_transaction_manifest/part24/00016.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part24/00016.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part24/00017.png b/tests/snapshots/nanox/test_transaction_manifest/part24/00017.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part24/00017.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00015.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00015.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00015.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00016.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00016.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00016.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00017.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00017.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00017.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00018.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00018.png deleted file mode 100644 index 9414bec7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00018.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00019.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00019.png deleted file mode 100644 index 1ce3ab44..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00019.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00020.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00020.png deleted file mode 100644 index 9ae633ba..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00020.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00021.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00021.png deleted file mode 100644 index d0a9d674..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00021.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00022.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00022.png deleted file mode 100644 index ab7a05c7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00022.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part25/00023.png b/tests/snapshots/nanox/test_transaction_manifest/part25/00023.png deleted file mode 100644 index 4666cbae..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part25/00023.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00005.png b/tests/snapshots/nanox/test_transaction_manifest/part27/00005.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part27/00005.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part27/00006.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part27/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part27/00007.png b/tests/snapshots/nanox/test_transaction_manifest/part27/00007.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part27/00007.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00005.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00005.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00005.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00006.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00007.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00007.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00007.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00008.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00008.png deleted file mode 100644 index 9414bec7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00008.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00009.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00009.png deleted file mode 100644 index 1ce3ab44..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00009.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00010.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00010.png deleted file mode 100644 index 9ae633ba..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00010.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00011.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00011.png deleted file mode 100644 index d0a9d674..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00011.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00012.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00012.png deleted file mode 100644 index ab7a05c7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00012.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part28/00013.png b/tests/snapshots/nanox/test_transaction_manifest/part28/00013.png deleted file mode 100644 index 4666cbae..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part28/00013.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part3/00001.png deleted file mode 100644 index a3da9bf2..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part3/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part3/00006.png deleted file mode 100644 index e121bd53..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part3/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00007.png b/tests/snapshots/nanox/test_transaction_manifest/part3/00007.png deleted file mode 100644 index 249fd9e4..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part3/00007.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00008.png b/tests/snapshots/nanox/test_transaction_manifest/part3/00008.png deleted file mode 100644 index 06279e18..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part3/00008.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part3/00009.png b/tests/snapshots/nanox/test_transaction_manifest/part3/00009.png deleted file mode 100644 index 10a556d6..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part3/00009.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part33/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part33/00001.png deleted file mode 100644 index cd2079c3..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part33/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part34/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part34/00001.png deleted file mode 100644 index cd2079c3..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part34/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part38/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part38/00001.png deleted file mode 100644 index ea667038..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part38/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part39/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part39/00001.png deleted file mode 100644 index ea667038..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part39/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part4/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part4/00001.png deleted file mode 100644 index 83973f38..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part4/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part5/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part5/00001.png deleted file mode 100644 index 043b17c0..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part5/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part50/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part50/00001.png deleted file mode 100644 index 9ad2d9bb..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part50/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part51/00004.png b/tests/snapshots/nanox/test_transaction_manifest/part51/00004.png deleted file mode 100644 index 84dd6243..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part51/00004.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part54/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part54/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part54/00015.png b/tests/snapshots/nanox/test_transaction_manifest/part54/00015.png deleted file mode 100644 index ec3d9358..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part54/00015.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part55/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part55/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part55/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part56/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part56/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00015.png b/tests/snapshots/nanox/test_transaction_manifest/part56/00015.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part56/00015.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00016.png b/tests/snapshots/nanox/test_transaction_manifest/part56/00016.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part56/00016.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part56/00017.png b/tests/snapshots/nanox/test_transaction_manifest/part56/00017.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part56/00017.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00006.png deleted file mode 100644 index 521eed02..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00015.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00015.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00015.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00016.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00016.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00016.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00017.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00017.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00017.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00018.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00018.png deleted file mode 100644 index 9414bec7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00018.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00019.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00019.png deleted file mode 100644 index 1ce3ab44..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00019.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00020.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00020.png deleted file mode 100644 index 9ae633ba..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00020.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00021.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00021.png deleted file mode 100644 index d0a9d674..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00021.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00022.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00022.png deleted file mode 100644 index ab7a05c7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00022.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part57/00023.png b/tests/snapshots/nanox/test_transaction_manifest/part57/00023.png deleted file mode 100644 index 4666cbae..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part57/00023.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00005.png b/tests/snapshots/nanox/test_transaction_manifest/part59/00005.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part59/00005.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part59/00006.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part59/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part59/00007.png b/tests/snapshots/nanox/test_transaction_manifest/part59/00007.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part59/00007.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part6/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part6/00001.png deleted file mode 100644 index 1dda0bac..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part6/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00005.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00005.png deleted file mode 100644 index d471d4ce..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00005.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00006.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00006.png deleted file mode 100644 index 0c0306ca..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00006.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00007.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00007.png deleted file mode 100644 index 37f58447..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00007.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00008.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00008.png deleted file mode 100644 index 9414bec7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00008.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00009.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00009.png deleted file mode 100644 index 1ce3ab44..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00009.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00010.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00010.png deleted file mode 100644 index 9ae633ba..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00010.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00011.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00011.png deleted file mode 100644 index d0a9d674..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00011.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00012.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00012.png deleted file mode 100644 index ab7a05c7..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00012.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part60/00013.png b/tests/snapshots/nanox/test_transaction_manifest/part60/00013.png deleted file mode 100644 index 4666cbae..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part60/00013.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part7/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part7/00001.png deleted file mode 100644 index c6547ca3..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part7/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_manifest/part9/00001.png b/tests/snapshots/nanox/test_transaction_manifest/part9/00001.png deleted file mode 100644 index a1214c74..00000000 Binary files a/tests/snapshots/nanox/test_transaction_manifest/part9/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00001.png b/tests/snapshots/nanox/test_transaction_params/part1/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00001.png and b/tests/snapshots/nanox/test_transaction_params/part1/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00002.png b/tests/snapshots/nanox/test_transaction_params/part1/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00002.png and b/tests/snapshots/nanox/test_transaction_params/part1/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00003.png b/tests/snapshots/nanox/test_transaction_params/part1/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00003.png and b/tests/snapshots/nanox/test_transaction_params/part1/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00004.png b/tests/snapshots/nanox/test_transaction_params/part1/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00004.png and b/tests/snapshots/nanox/test_transaction_params/part1/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00005.png b/tests/snapshots/nanox/test_transaction_params/part1/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00005.png and b/tests/snapshots/nanox/test_transaction_params/part1/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00006.png b/tests/snapshots/nanox/test_transaction_params/part1/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00006.png and b/tests/snapshots/nanox/test_transaction_params/part1/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00007.png b/tests/snapshots/nanox/test_transaction_params/part1/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00007.png and b/tests/snapshots/nanox/test_transaction_params/part1/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00008.png b/tests/snapshots/nanox/test_transaction_params/part1/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00008.png and b/tests/snapshots/nanox/test_transaction_params/part1/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00009.png b/tests/snapshots/nanox/test_transaction_params/part1/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00009.png and b/tests/snapshots/nanox/test_transaction_params/part1/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00010.png b/tests/snapshots/nanox/test_transaction_params/part1/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00010.png and b/tests/snapshots/nanox/test_transaction_params/part1/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00011.png b/tests/snapshots/nanox/test_transaction_params/part1/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00011.png and b/tests/snapshots/nanox/test_transaction_params/part1/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00012.png b/tests/snapshots/nanox/test_transaction_params/part1/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00012.png and b/tests/snapshots/nanox/test_transaction_params/part1/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00013.png b/tests/snapshots/nanox/test_transaction_params/part1/00013.png index 14c87a49..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00013.png and b/tests/snapshots/nanox/test_transaction_params/part1/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00014.png b/tests/snapshots/nanox/test_transaction_params/part1/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00014.png and b/tests/snapshots/nanox/test_transaction_params/part1/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00015.png b/tests/snapshots/nanox/test_transaction_params/part1/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part1/00015.png and b/tests/snapshots/nanox/test_transaction_params/part1/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00016.png b/tests/snapshots/nanox/test_transaction_params/part1/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part1/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00017.png b/tests/snapshots/nanox/test_transaction_params/part1/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part1/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00018.png b/tests/snapshots/nanox/test_transaction_params/part1/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part1/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part1/00019.png b/tests/snapshots/nanox/test_transaction_params/part1/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part1/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00001.png b/tests/snapshots/nanox/test_transaction_params/part10/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00001.png and b/tests/snapshots/nanox/test_transaction_params/part10/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00002.png b/tests/snapshots/nanox/test_transaction_params/part10/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00002.png and b/tests/snapshots/nanox/test_transaction_params/part10/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00003.png b/tests/snapshots/nanox/test_transaction_params/part10/00003.png index 4fc695e8..de527bf7 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00003.png and b/tests/snapshots/nanox/test_transaction_params/part10/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00004.png b/tests/snapshots/nanox/test_transaction_params/part10/00004.png index b16f6914..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00004.png and b/tests/snapshots/nanox/test_transaction_params/part10/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00005.png b/tests/snapshots/nanox/test_transaction_params/part10/00005.png index 024cc329..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00005.png and b/tests/snapshots/nanox/test_transaction_params/part10/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00006.png b/tests/snapshots/nanox/test_transaction_params/part10/00006.png index d8a2740e..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00006.png and b/tests/snapshots/nanox/test_transaction_params/part10/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00007.png b/tests/snapshots/nanox/test_transaction_params/part10/00007.png index 4d1a7f73..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00007.png and b/tests/snapshots/nanox/test_transaction_params/part10/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00008.png b/tests/snapshots/nanox/test_transaction_params/part10/00008.png index 38f03f75..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00008.png and b/tests/snapshots/nanox/test_transaction_params/part10/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00009.png b/tests/snapshots/nanox/test_transaction_params/part10/00009.png index 37312a69..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00009.png and b/tests/snapshots/nanox/test_transaction_params/part10/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00010.png b/tests/snapshots/nanox/test_transaction_params/part10/00010.png index 163e4981..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00010.png and b/tests/snapshots/nanox/test_transaction_params/part10/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00011.png b/tests/snapshots/nanox/test_transaction_params/part10/00011.png index b5f70a2c..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00011.png and b/tests/snapshots/nanox/test_transaction_params/part10/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00012.png b/tests/snapshots/nanox/test_transaction_params/part10/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00012.png and b/tests/snapshots/nanox/test_transaction_params/part10/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00013.png b/tests/snapshots/nanox/test_transaction_params/part10/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00013.png and b/tests/snapshots/nanox/test_transaction_params/part10/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part10/00014.png b/tests/snapshots/nanox/test_transaction_params/part10/00014.png index 14c87a49..e84e8dfd 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part10/00014.png and b/tests/snapshots/nanox/test_transaction_params/part10/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00001.png b/tests/snapshots/nanox/test_transaction_params/part11/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00001.png and b/tests/snapshots/nanox/test_transaction_params/part11/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00002.png b/tests/snapshots/nanox/test_transaction_params/part11/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00002.png and b/tests/snapshots/nanox/test_transaction_params/part11/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00003.png b/tests/snapshots/nanox/test_transaction_params/part11/00003.png index 4fc695e8..de527bf7 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00003.png and b/tests/snapshots/nanox/test_transaction_params/part11/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00004.png b/tests/snapshots/nanox/test_transaction_params/part11/00004.png index b16f6914..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00004.png and b/tests/snapshots/nanox/test_transaction_params/part11/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00005.png b/tests/snapshots/nanox/test_transaction_params/part11/00005.png index 024cc329..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00005.png and b/tests/snapshots/nanox/test_transaction_params/part11/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00006.png b/tests/snapshots/nanox/test_transaction_params/part11/00006.png index d8a2740e..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00006.png and b/tests/snapshots/nanox/test_transaction_params/part11/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00007.png b/tests/snapshots/nanox/test_transaction_params/part11/00007.png index 4d1a7f73..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00007.png and b/tests/snapshots/nanox/test_transaction_params/part11/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00008.png b/tests/snapshots/nanox/test_transaction_params/part11/00008.png index 38f03f75..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00008.png and b/tests/snapshots/nanox/test_transaction_params/part11/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00009.png b/tests/snapshots/nanox/test_transaction_params/part11/00009.png index 37312a69..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00009.png and b/tests/snapshots/nanox/test_transaction_params/part11/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00010.png b/tests/snapshots/nanox/test_transaction_params/part11/00010.png index 163e4981..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00010.png and b/tests/snapshots/nanox/test_transaction_params/part11/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00011.png b/tests/snapshots/nanox/test_transaction_params/part11/00011.png index b5f70a2c..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00011.png and b/tests/snapshots/nanox/test_transaction_params/part11/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00012.png b/tests/snapshots/nanox/test_transaction_params/part11/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00012.png and b/tests/snapshots/nanox/test_transaction_params/part11/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00013.png b/tests/snapshots/nanox/test_transaction_params/part11/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00013.png and b/tests/snapshots/nanox/test_transaction_params/part11/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part11/00014.png b/tests/snapshots/nanox/test_transaction_params/part11/00014.png index 14c87a49..e84e8dfd 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part11/00014.png and b/tests/snapshots/nanox/test_transaction_params/part11/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00001.png b/tests/snapshots/nanox/test_transaction_params/part12/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00001.png and b/tests/snapshots/nanox/test_transaction_params/part12/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00002.png b/tests/snapshots/nanox/test_transaction_params/part12/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00002.png and b/tests/snapshots/nanox/test_transaction_params/part12/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00003.png b/tests/snapshots/nanox/test_transaction_params/part12/00003.png index 4fc695e8..de527bf7 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00003.png and b/tests/snapshots/nanox/test_transaction_params/part12/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00004.png b/tests/snapshots/nanox/test_transaction_params/part12/00004.png index b16f6914..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00004.png and b/tests/snapshots/nanox/test_transaction_params/part12/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00005.png b/tests/snapshots/nanox/test_transaction_params/part12/00005.png index 024cc329..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00005.png and b/tests/snapshots/nanox/test_transaction_params/part12/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00006.png b/tests/snapshots/nanox/test_transaction_params/part12/00006.png index d8a2740e..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00006.png and b/tests/snapshots/nanox/test_transaction_params/part12/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00007.png b/tests/snapshots/nanox/test_transaction_params/part12/00007.png index 4d1a7f73..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00007.png and b/tests/snapshots/nanox/test_transaction_params/part12/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00008.png b/tests/snapshots/nanox/test_transaction_params/part12/00008.png index 38f03f75..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00008.png and b/tests/snapshots/nanox/test_transaction_params/part12/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00009.png b/tests/snapshots/nanox/test_transaction_params/part12/00009.png index 37312a69..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00009.png and b/tests/snapshots/nanox/test_transaction_params/part12/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00010.png b/tests/snapshots/nanox/test_transaction_params/part12/00010.png index 163e4981..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00010.png and b/tests/snapshots/nanox/test_transaction_params/part12/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00011.png b/tests/snapshots/nanox/test_transaction_params/part12/00011.png index b5f70a2c..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00011.png and b/tests/snapshots/nanox/test_transaction_params/part12/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00012.png b/tests/snapshots/nanox/test_transaction_params/part12/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00012.png and b/tests/snapshots/nanox/test_transaction_params/part12/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00013.png b/tests/snapshots/nanox/test_transaction_params/part12/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00013.png and b/tests/snapshots/nanox/test_transaction_params/part12/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part12/00014.png b/tests/snapshots/nanox/test_transaction_params/part12/00014.png index 14c87a49..e84e8dfd 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part12/00014.png and b/tests/snapshots/nanox/test_transaction_params/part12/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00001.png b/tests/snapshots/nanox/test_transaction_params/part2/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00001.png and b/tests/snapshots/nanox/test_transaction_params/part2/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00002.png b/tests/snapshots/nanox/test_transaction_params/part2/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00002.png and b/tests/snapshots/nanox/test_transaction_params/part2/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00003.png b/tests/snapshots/nanox/test_transaction_params/part2/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00003.png and b/tests/snapshots/nanox/test_transaction_params/part2/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00004.png b/tests/snapshots/nanox/test_transaction_params/part2/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00004.png and b/tests/snapshots/nanox/test_transaction_params/part2/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00005.png b/tests/snapshots/nanox/test_transaction_params/part2/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00005.png and b/tests/snapshots/nanox/test_transaction_params/part2/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00006.png b/tests/snapshots/nanox/test_transaction_params/part2/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00006.png and b/tests/snapshots/nanox/test_transaction_params/part2/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00007.png b/tests/snapshots/nanox/test_transaction_params/part2/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00007.png and b/tests/snapshots/nanox/test_transaction_params/part2/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00008.png b/tests/snapshots/nanox/test_transaction_params/part2/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00008.png and b/tests/snapshots/nanox/test_transaction_params/part2/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00009.png b/tests/snapshots/nanox/test_transaction_params/part2/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00009.png and b/tests/snapshots/nanox/test_transaction_params/part2/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00010.png b/tests/snapshots/nanox/test_transaction_params/part2/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00010.png and b/tests/snapshots/nanox/test_transaction_params/part2/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00011.png b/tests/snapshots/nanox/test_transaction_params/part2/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00011.png and b/tests/snapshots/nanox/test_transaction_params/part2/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00012.png b/tests/snapshots/nanox/test_transaction_params/part2/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00012.png and b/tests/snapshots/nanox/test_transaction_params/part2/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00013.png b/tests/snapshots/nanox/test_transaction_params/part2/00013.png index 14c87a49..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00013.png and b/tests/snapshots/nanox/test_transaction_params/part2/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00014.png b/tests/snapshots/nanox/test_transaction_params/part2/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00014.png and b/tests/snapshots/nanox/test_transaction_params/part2/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00015.png b/tests/snapshots/nanox/test_transaction_params/part2/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part2/00015.png and b/tests/snapshots/nanox/test_transaction_params/part2/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00016.png b/tests/snapshots/nanox/test_transaction_params/part2/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part2/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00017.png b/tests/snapshots/nanox/test_transaction_params/part2/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part2/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00018.png b/tests/snapshots/nanox/test_transaction_params/part2/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part2/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part2/00019.png b/tests/snapshots/nanox/test_transaction_params/part2/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part2/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00001.png b/tests/snapshots/nanox/test_transaction_params/part3/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00001.png and b/tests/snapshots/nanox/test_transaction_params/part3/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00002.png b/tests/snapshots/nanox/test_transaction_params/part3/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00002.png and b/tests/snapshots/nanox/test_transaction_params/part3/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00003.png b/tests/snapshots/nanox/test_transaction_params/part3/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00003.png and b/tests/snapshots/nanox/test_transaction_params/part3/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00004.png b/tests/snapshots/nanox/test_transaction_params/part3/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00004.png and b/tests/snapshots/nanox/test_transaction_params/part3/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00005.png b/tests/snapshots/nanox/test_transaction_params/part3/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00005.png and b/tests/snapshots/nanox/test_transaction_params/part3/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00006.png b/tests/snapshots/nanox/test_transaction_params/part3/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00006.png and b/tests/snapshots/nanox/test_transaction_params/part3/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00007.png b/tests/snapshots/nanox/test_transaction_params/part3/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00007.png and b/tests/snapshots/nanox/test_transaction_params/part3/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00008.png b/tests/snapshots/nanox/test_transaction_params/part3/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00008.png and b/tests/snapshots/nanox/test_transaction_params/part3/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00009.png b/tests/snapshots/nanox/test_transaction_params/part3/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00009.png and b/tests/snapshots/nanox/test_transaction_params/part3/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00010.png b/tests/snapshots/nanox/test_transaction_params/part3/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00010.png and b/tests/snapshots/nanox/test_transaction_params/part3/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00011.png b/tests/snapshots/nanox/test_transaction_params/part3/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00011.png and b/tests/snapshots/nanox/test_transaction_params/part3/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00012.png b/tests/snapshots/nanox/test_transaction_params/part3/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00012.png and b/tests/snapshots/nanox/test_transaction_params/part3/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00013.png b/tests/snapshots/nanox/test_transaction_params/part3/00013.png index 14c87a49..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00013.png and b/tests/snapshots/nanox/test_transaction_params/part3/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00014.png b/tests/snapshots/nanox/test_transaction_params/part3/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00014.png and b/tests/snapshots/nanox/test_transaction_params/part3/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00015.png b/tests/snapshots/nanox/test_transaction_params/part3/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part3/00015.png and b/tests/snapshots/nanox/test_transaction_params/part3/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00016.png b/tests/snapshots/nanox/test_transaction_params/part3/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part3/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00017.png b/tests/snapshots/nanox/test_transaction_params/part3/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part3/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00018.png b/tests/snapshots/nanox/test_transaction_params/part3/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part3/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part3/00019.png b/tests/snapshots/nanox/test_transaction_params/part3/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part3/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00001.png b/tests/snapshots/nanox/test_transaction_params/part4/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00001.png and b/tests/snapshots/nanox/test_transaction_params/part4/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00002.png b/tests/snapshots/nanox/test_transaction_params/part4/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00002.png and b/tests/snapshots/nanox/test_transaction_params/part4/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00003.png b/tests/snapshots/nanox/test_transaction_params/part4/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00003.png and b/tests/snapshots/nanox/test_transaction_params/part4/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00004.png b/tests/snapshots/nanox/test_transaction_params/part4/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00004.png and b/tests/snapshots/nanox/test_transaction_params/part4/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00005.png b/tests/snapshots/nanox/test_transaction_params/part4/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00005.png and b/tests/snapshots/nanox/test_transaction_params/part4/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00006.png b/tests/snapshots/nanox/test_transaction_params/part4/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00006.png and b/tests/snapshots/nanox/test_transaction_params/part4/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00007.png b/tests/snapshots/nanox/test_transaction_params/part4/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00007.png and b/tests/snapshots/nanox/test_transaction_params/part4/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00008.png b/tests/snapshots/nanox/test_transaction_params/part4/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00008.png and b/tests/snapshots/nanox/test_transaction_params/part4/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00009.png b/tests/snapshots/nanox/test_transaction_params/part4/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00009.png and b/tests/snapshots/nanox/test_transaction_params/part4/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00010.png b/tests/snapshots/nanox/test_transaction_params/part4/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00010.png and b/tests/snapshots/nanox/test_transaction_params/part4/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00011.png b/tests/snapshots/nanox/test_transaction_params/part4/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00011.png and b/tests/snapshots/nanox/test_transaction_params/part4/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00012.png b/tests/snapshots/nanox/test_transaction_params/part4/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00012.png and b/tests/snapshots/nanox/test_transaction_params/part4/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00013.png b/tests/snapshots/nanox/test_transaction_params/part4/00013.png index 14c87a49..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00013.png and b/tests/snapshots/nanox/test_transaction_params/part4/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00014.png b/tests/snapshots/nanox/test_transaction_params/part4/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00014.png and b/tests/snapshots/nanox/test_transaction_params/part4/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00015.png b/tests/snapshots/nanox/test_transaction_params/part4/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part4/00015.png and b/tests/snapshots/nanox/test_transaction_params/part4/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00016.png b/tests/snapshots/nanox/test_transaction_params/part4/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part4/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00017.png b/tests/snapshots/nanox/test_transaction_params/part4/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part4/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00018.png b/tests/snapshots/nanox/test_transaction_params/part4/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part4/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part4/00019.png b/tests/snapshots/nanox/test_transaction_params/part4/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_params/part4/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00001.png b/tests/snapshots/nanox/test_transaction_params/part5/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00001.png and b/tests/snapshots/nanox/test_transaction_params/part5/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00002.png b/tests/snapshots/nanox/test_transaction_params/part5/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00002.png and b/tests/snapshots/nanox/test_transaction_params/part5/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00003.png b/tests/snapshots/nanox/test_transaction_params/part5/00003.png index 2114e6ab..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00003.png and b/tests/snapshots/nanox/test_transaction_params/part5/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00004.png b/tests/snapshots/nanox/test_transaction_params/part5/00004.png index ce631453..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00004.png and b/tests/snapshots/nanox/test_transaction_params/part5/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00005.png b/tests/snapshots/nanox/test_transaction_params/part5/00005.png index 917cd5b9..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00005.png and b/tests/snapshots/nanox/test_transaction_params/part5/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00006.png b/tests/snapshots/nanox/test_transaction_params/part5/00006.png index 191a3828..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00006.png and b/tests/snapshots/nanox/test_transaction_params/part5/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00007.png b/tests/snapshots/nanox/test_transaction_params/part5/00007.png index afefdfdf..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00007.png and b/tests/snapshots/nanox/test_transaction_params/part5/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00008.png b/tests/snapshots/nanox/test_transaction_params/part5/00008.png index 738cd8e5..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00008.png and b/tests/snapshots/nanox/test_transaction_params/part5/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00012.png b/tests/snapshots/nanox/test_transaction_params/part5/00012.png index 37312a69..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00012.png and b/tests/snapshots/nanox/test_transaction_params/part5/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00015.png b/tests/snapshots/nanox/test_transaction_params/part5/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00015.png and b/tests/snapshots/nanox/test_transaction_params/part5/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part5/00016.png b/tests/snapshots/nanox/test_transaction_params/part5/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part5/00016.png and b/tests/snapshots/nanox/test_transaction_params/part5/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00001.png b/tests/snapshots/nanox/test_transaction_params/part6/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00001.png and b/tests/snapshots/nanox/test_transaction_params/part6/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00002.png b/tests/snapshots/nanox/test_transaction_params/part6/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00002.png and b/tests/snapshots/nanox/test_transaction_params/part6/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00003.png b/tests/snapshots/nanox/test_transaction_params/part6/00003.png index 2114e6ab..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00003.png and b/tests/snapshots/nanox/test_transaction_params/part6/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00004.png b/tests/snapshots/nanox/test_transaction_params/part6/00004.png index ce631453..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00004.png and b/tests/snapshots/nanox/test_transaction_params/part6/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00005.png b/tests/snapshots/nanox/test_transaction_params/part6/00005.png index 917cd5b9..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00005.png and b/tests/snapshots/nanox/test_transaction_params/part6/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00006.png b/tests/snapshots/nanox/test_transaction_params/part6/00006.png index 191a3828..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00006.png and b/tests/snapshots/nanox/test_transaction_params/part6/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00007.png b/tests/snapshots/nanox/test_transaction_params/part6/00007.png index afefdfdf..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00007.png and b/tests/snapshots/nanox/test_transaction_params/part6/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00008.png b/tests/snapshots/nanox/test_transaction_params/part6/00008.png index 738cd8e5..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00008.png and b/tests/snapshots/nanox/test_transaction_params/part6/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00012.png b/tests/snapshots/nanox/test_transaction_params/part6/00012.png index 37312a69..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00012.png and b/tests/snapshots/nanox/test_transaction_params/part6/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00015.png b/tests/snapshots/nanox/test_transaction_params/part6/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00015.png and b/tests/snapshots/nanox/test_transaction_params/part6/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part6/00016.png b/tests/snapshots/nanox/test_transaction_params/part6/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part6/00016.png and b/tests/snapshots/nanox/test_transaction_params/part6/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00001.png b/tests/snapshots/nanox/test_transaction_params/part7/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00001.png and b/tests/snapshots/nanox/test_transaction_params/part7/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00002.png b/tests/snapshots/nanox/test_transaction_params/part7/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00002.png and b/tests/snapshots/nanox/test_transaction_params/part7/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00003.png b/tests/snapshots/nanox/test_transaction_params/part7/00003.png index 2114e6ab..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00003.png and b/tests/snapshots/nanox/test_transaction_params/part7/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00004.png b/tests/snapshots/nanox/test_transaction_params/part7/00004.png index ce631453..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00004.png and b/tests/snapshots/nanox/test_transaction_params/part7/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00005.png b/tests/snapshots/nanox/test_transaction_params/part7/00005.png index 917cd5b9..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00005.png and b/tests/snapshots/nanox/test_transaction_params/part7/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00006.png b/tests/snapshots/nanox/test_transaction_params/part7/00006.png index 191a3828..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00006.png and b/tests/snapshots/nanox/test_transaction_params/part7/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00007.png b/tests/snapshots/nanox/test_transaction_params/part7/00007.png index afefdfdf..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00007.png and b/tests/snapshots/nanox/test_transaction_params/part7/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00008.png b/tests/snapshots/nanox/test_transaction_params/part7/00008.png index 738cd8e5..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00008.png and b/tests/snapshots/nanox/test_transaction_params/part7/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00012.png b/tests/snapshots/nanox/test_transaction_params/part7/00012.png index 37312a69..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00012.png and b/tests/snapshots/nanox/test_transaction_params/part7/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00015.png b/tests/snapshots/nanox/test_transaction_params/part7/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00015.png and b/tests/snapshots/nanox/test_transaction_params/part7/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part7/00016.png b/tests/snapshots/nanox/test_transaction_params/part7/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part7/00016.png and b/tests/snapshots/nanox/test_transaction_params/part7/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00001.png b/tests/snapshots/nanox/test_transaction_params/part8/00001.png index a10bf897..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00001.png and b/tests/snapshots/nanox/test_transaction_params/part8/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00002.png b/tests/snapshots/nanox/test_transaction_params/part8/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00002.png and b/tests/snapshots/nanox/test_transaction_params/part8/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00003.png b/tests/snapshots/nanox/test_transaction_params/part8/00003.png index 2114e6ab..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00003.png and b/tests/snapshots/nanox/test_transaction_params/part8/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00004.png b/tests/snapshots/nanox/test_transaction_params/part8/00004.png index ce631453..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00004.png and b/tests/snapshots/nanox/test_transaction_params/part8/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00005.png b/tests/snapshots/nanox/test_transaction_params/part8/00005.png index 917cd5b9..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00005.png and b/tests/snapshots/nanox/test_transaction_params/part8/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00006.png b/tests/snapshots/nanox/test_transaction_params/part8/00006.png index 191a3828..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00006.png and b/tests/snapshots/nanox/test_transaction_params/part8/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00007.png b/tests/snapshots/nanox/test_transaction_params/part8/00007.png index afefdfdf..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00007.png and b/tests/snapshots/nanox/test_transaction_params/part8/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00008.png b/tests/snapshots/nanox/test_transaction_params/part8/00008.png index 738cd8e5..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00008.png and b/tests/snapshots/nanox/test_transaction_params/part8/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00012.png b/tests/snapshots/nanox/test_transaction_params/part8/00012.png index 37312a69..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00012.png and b/tests/snapshots/nanox/test_transaction_params/part8/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00015.png b/tests/snapshots/nanox/test_transaction_params/part8/00015.png index 42cf0b73..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00015.png and b/tests/snapshots/nanox/test_transaction_params/part8/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part8/00016.png b/tests/snapshots/nanox/test_transaction_params/part8/00016.png index 819d3159..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part8/00016.png and b/tests/snapshots/nanox/test_transaction_params/part8/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00001.png b/tests/snapshots/nanox/test_transaction_params/part9/00001.png index 5f3d1a05..262b4b5e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00001.png and b/tests/snapshots/nanox/test_transaction_params/part9/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00002.png b/tests/snapshots/nanox/test_transaction_params/part9/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00002.png and b/tests/snapshots/nanox/test_transaction_params/part9/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00003.png b/tests/snapshots/nanox/test_transaction_params/part9/00003.png index 4fc695e8..de527bf7 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00003.png and b/tests/snapshots/nanox/test_transaction_params/part9/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00004.png b/tests/snapshots/nanox/test_transaction_params/part9/00004.png index b16f6914..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00004.png and b/tests/snapshots/nanox/test_transaction_params/part9/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00005.png b/tests/snapshots/nanox/test_transaction_params/part9/00005.png index 024cc329..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00005.png and b/tests/snapshots/nanox/test_transaction_params/part9/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00006.png b/tests/snapshots/nanox/test_transaction_params/part9/00006.png index d8a2740e..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00006.png and b/tests/snapshots/nanox/test_transaction_params/part9/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00007.png b/tests/snapshots/nanox/test_transaction_params/part9/00007.png index 4d1a7f73..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00007.png and b/tests/snapshots/nanox/test_transaction_params/part9/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00008.png b/tests/snapshots/nanox/test_transaction_params/part9/00008.png index 38f03f75..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00008.png and b/tests/snapshots/nanox/test_transaction_params/part9/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00009.png b/tests/snapshots/nanox/test_transaction_params/part9/00009.png index 37312a69..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00009.png and b/tests/snapshots/nanox/test_transaction_params/part9/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00010.png b/tests/snapshots/nanox/test_transaction_params/part9/00010.png index 163e4981..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00010.png and b/tests/snapshots/nanox/test_transaction_params/part9/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00011.png b/tests/snapshots/nanox/test_transaction_params/part9/00011.png index b5f70a2c..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00011.png and b/tests/snapshots/nanox/test_transaction_params/part9/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00012.png b/tests/snapshots/nanox/test_transaction_params/part9/00012.png index 42cf0b73..14c87a49 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00012.png and b/tests/snapshots/nanox/test_transaction_params/part9/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00013.png b/tests/snapshots/nanox/test_transaction_params/part9/00013.png index 819d3159..1e4be699 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00013.png and b/tests/snapshots/nanox/test_transaction_params/part9/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_params/part9/00014.png b/tests/snapshots/nanox/test_transaction_params/part9/00014.png index 14c87a49..e84e8dfd 100644 Binary files a/tests/snapshots/nanox/test_transaction_params/part9/00014.png and b/tests/snapshots/nanox/test_transaction_params/part9/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00001.png b/tests/snapshots/nanox/test_transaction_refused/00001.png index 5b962ee9..a10bf897 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00001.png and b/tests/snapshots/nanox/test_transaction_refused/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00002.png b/tests/snapshots/nanox/test_transaction_refused/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00002.png and b/tests/snapshots/nanox/test_transaction_refused/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00003.png b/tests/snapshots/nanox/test_transaction_refused/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00003.png and b/tests/snapshots/nanox/test_transaction_refused/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00004.png b/tests/snapshots/nanox/test_transaction_refused/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00004.png and b/tests/snapshots/nanox/test_transaction_refused/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00005.png b/tests/snapshots/nanox/test_transaction_refused/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00005.png and b/tests/snapshots/nanox/test_transaction_refused/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00006.png b/tests/snapshots/nanox/test_transaction_refused/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00006.png and b/tests/snapshots/nanox/test_transaction_refused/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00007.png b/tests/snapshots/nanox/test_transaction_refused/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00007.png and b/tests/snapshots/nanox/test_transaction_refused/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00008.png b/tests/snapshots/nanox/test_transaction_refused/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00008.png and b/tests/snapshots/nanox/test_transaction_refused/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00009.png b/tests/snapshots/nanox/test_transaction_refused/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00009.png and b/tests/snapshots/nanox/test_transaction_refused/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00010.png b/tests/snapshots/nanox/test_transaction_refused/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00010.png and b/tests/snapshots/nanox/test_transaction_refused/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00011.png b/tests/snapshots/nanox/test_transaction_refused/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00011.png and b/tests/snapshots/nanox/test_transaction_refused/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00012.png b/tests/snapshots/nanox/test_transaction_refused/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00012.png and b/tests/snapshots/nanox/test_transaction_refused/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00013.png b/tests/snapshots/nanox/test_transaction_refused/00013.png index 14c87a49..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00013.png and b/tests/snapshots/nanox/test_transaction_refused/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00014.png b/tests/snapshots/nanox/test_transaction_refused/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00014.png and b/tests/snapshots/nanox/test_transaction_refused/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00015.png b/tests/snapshots/nanox/test_transaction_refused/00015.png index de8a2912..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00015.png and b/tests/snapshots/nanox/test_transaction_refused/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00016.png b/tests/snapshots/nanox/test_transaction_refused/00016.png index e84e8dfd..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_refused/00016.png and b/tests/snapshots/nanox/test_transaction_refused/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00017.png b/tests/snapshots/nanox/test_transaction_refused/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_refused/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00018.png b/tests/snapshots/nanox/test_transaction_refused/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_refused/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00019.png b/tests/snapshots/nanox/test_transaction_refused/00019.png new file mode 100644 index 00000000..de8a2912 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_refused/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_refused/00020.png b/tests/snapshots/nanox/test_transaction_refused/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_refused/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00001.png b/tests/snapshots/nanox/test_transaction_slot/part0/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00002.png b/tests/snapshots/nanox/test_transaction_slot/part0/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00002.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00003.png b/tests/snapshots/nanox/test_transaction_slot/part0/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00004.png b/tests/snapshots/nanox/test_transaction_slot/part0/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00005.png b/tests/snapshots/nanox/test_transaction_slot/part0/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00006.png b/tests/snapshots/nanox/test_transaction_slot/part0/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00007.png b/tests/snapshots/nanox/test_transaction_slot/part0/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00008.png b/tests/snapshots/nanox/test_transaction_slot/part0/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00009.png b/tests/snapshots/nanox/test_transaction_slot/part0/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00010.png b/tests/snapshots/nanox/test_transaction_slot/part0/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00011.png b/tests/snapshots/nanox/test_transaction_slot/part0/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00012.png b/tests/snapshots/nanox/test_transaction_slot/part0/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00013.png b/tests/snapshots/nanox/test_transaction_slot/part0/00013.png index 14c87a49..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00014.png b/tests/snapshots/nanox/test_transaction_slot/part0/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00015.png b/tests/snapshots/nanox/test_transaction_slot/part0/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part0/00015.png and b/tests/snapshots/nanox/test_transaction_slot/part0/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00016.png b/tests/snapshots/nanox/test_transaction_slot/part0/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part0/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00017.png b/tests/snapshots/nanox/test_transaction_slot/part0/00017.png new file mode 100644 index 00000000..14c87a49 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part0/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00018.png b/tests/snapshots/nanox/test_transaction_slot/part0/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part0/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part0/00019.png b/tests/snapshots/nanox/test_transaction_slot/part0/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part0/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00001.png b/tests/snapshots/nanox/test_transaction_slot/part10/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00003.png b/tests/snapshots/nanox/test_transaction_slot/part10/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00004.png b/tests/snapshots/nanox/test_transaction_slot/part10/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00005.png b/tests/snapshots/nanox/test_transaction_slot/part10/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00006.png b/tests/snapshots/nanox/test_transaction_slot/part10/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00007.png b/tests/snapshots/nanox/test_transaction_slot/part10/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00008.png b/tests/snapshots/nanox/test_transaction_slot/part10/00008.png index d5f0894e..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00009.png b/tests/snapshots/nanox/test_transaction_slot/part10/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00010.png b/tests/snapshots/nanox/test_transaction_slot/part10/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00011.png b/tests/snapshots/nanox/test_transaction_slot/part10/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00012.png b/tests/snapshots/nanox/test_transaction_slot/part10/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00013.png b/tests/snapshots/nanox/test_transaction_slot/part10/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00014.png b/tests/snapshots/nanox/test_transaction_slot/part10/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part10/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part10/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00015.png b/tests/snapshots/nanox/test_transaction_slot/part10/00015.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part10/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00016.png b/tests/snapshots/nanox/test_transaction_slot/part10/00016.png new file mode 100644 index 00000000..819d3159 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part10/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00017.png b/tests/snapshots/nanox/test_transaction_slot/part10/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part10/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part10/00018.png b/tests/snapshots/nanox/test_transaction_slot/part10/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part10/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00001.png b/tests/snapshots/nanox/test_transaction_slot/part12/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00003.png b/tests/snapshots/nanox/test_transaction_slot/part12/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00004.png b/tests/snapshots/nanox/test_transaction_slot/part12/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00005.png b/tests/snapshots/nanox/test_transaction_slot/part12/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00006.png b/tests/snapshots/nanox/test_transaction_slot/part12/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00007.png b/tests/snapshots/nanox/test_transaction_slot/part12/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00008.png b/tests/snapshots/nanox/test_transaction_slot/part12/00008.png index d5f0894e..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00009.png b/tests/snapshots/nanox/test_transaction_slot/part12/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00010.png b/tests/snapshots/nanox/test_transaction_slot/part12/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00011.png b/tests/snapshots/nanox/test_transaction_slot/part12/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00012.png b/tests/snapshots/nanox/test_transaction_slot/part12/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00013.png b/tests/snapshots/nanox/test_transaction_slot/part12/00013.png index d3857f37..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00014.png b/tests/snapshots/nanox/test_transaction_slot/part12/00014.png index 936a3da4..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00015.png b/tests/snapshots/nanox/test_transaction_slot/part12/00015.png index 0b2d916f..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00015.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00016.png b/tests/snapshots/nanox/test_transaction_slot/part12/00016.png index 1e4be699..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00016.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00017.png b/tests/snapshots/nanox/test_transaction_slot/part12/00017.png index e84e8dfd..4f365818 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part12/00017.png and b/tests/snapshots/nanox/test_transaction_slot/part12/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00018.png b/tests/snapshots/nanox/test_transaction_slot/part12/00018.png new file mode 100644 index 00000000..ad5b6926 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part12/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00019.png b/tests/snapshots/nanox/test_transaction_slot/part12/00019.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part12/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00020.png b/tests/snapshots/nanox/test_transaction_slot/part12/00020.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part12/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part12/00021.png b/tests/snapshots/nanox/test_transaction_slot/part12/00021.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part12/00021.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00001.png b/tests/snapshots/nanox/test_transaction_slot/part14/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00003.png b/tests/snapshots/nanox/test_transaction_slot/part14/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00004.png b/tests/snapshots/nanox/test_transaction_slot/part14/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00005.png b/tests/snapshots/nanox/test_transaction_slot/part14/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00006.png b/tests/snapshots/nanox/test_transaction_slot/part14/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00007.png b/tests/snapshots/nanox/test_transaction_slot/part14/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00008.png b/tests/snapshots/nanox/test_transaction_slot/part14/00008.png index d5f0894e..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00009.png b/tests/snapshots/nanox/test_transaction_slot/part14/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00010.png b/tests/snapshots/nanox/test_transaction_slot/part14/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00011.png b/tests/snapshots/nanox/test_transaction_slot/part14/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00012.png b/tests/snapshots/nanox/test_transaction_slot/part14/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00013.png b/tests/snapshots/nanox/test_transaction_slot/part14/00013.png index d3857f37..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00014.png b/tests/snapshots/nanox/test_transaction_slot/part14/00014.png index a68dcaa7..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00015.png b/tests/snapshots/nanox/test_transaction_slot/part14/00015.png index 1e4be699..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00015.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00016.png b/tests/snapshots/nanox/test_transaction_slot/part14/00016.png index e84e8dfd..8099d16e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part14/00016.png and b/tests/snapshots/nanox/test_transaction_slot/part14/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00017.png b/tests/snapshots/nanox/test_transaction_slot/part14/00017.png new file mode 100644 index 00000000..4f365818 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part14/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00018.png b/tests/snapshots/nanox/test_transaction_slot/part14/00018.png new file mode 100644 index 00000000..a68dcaa7 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part14/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00019.png b/tests/snapshots/nanox/test_transaction_slot/part14/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part14/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part14/00020.png b/tests/snapshots/nanox/test_transaction_slot/part14/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part14/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00001.png b/tests/snapshots/nanox/test_transaction_slot/part15/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00002.png b/tests/snapshots/nanox/test_transaction_slot/part15/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00002.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00003.png b/tests/snapshots/nanox/test_transaction_slot/part15/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00004.png b/tests/snapshots/nanox/test_transaction_slot/part15/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00005.png b/tests/snapshots/nanox/test_transaction_slot/part15/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00006.png b/tests/snapshots/nanox/test_transaction_slot/part15/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00007.png b/tests/snapshots/nanox/test_transaction_slot/part15/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00008.png b/tests/snapshots/nanox/test_transaction_slot/part15/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00009.png b/tests/snapshots/nanox/test_transaction_slot/part15/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00010.png b/tests/snapshots/nanox/test_transaction_slot/part15/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00011.png b/tests/snapshots/nanox/test_transaction_slot/part15/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00012.png b/tests/snapshots/nanox/test_transaction_slot/part15/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00013.png b/tests/snapshots/nanox/test_transaction_slot/part15/00013.png index 38b11c55..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00014.png b/tests/snapshots/nanox/test_transaction_slot/part15/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00015.png b/tests/snapshots/nanox/test_transaction_slot/part15/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part15/00015.png and b/tests/snapshots/nanox/test_transaction_slot/part15/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00016.png b/tests/snapshots/nanox/test_transaction_slot/part15/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part15/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00017.png b/tests/snapshots/nanox/test_transaction_slot/part15/00017.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part15/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00018.png b/tests/snapshots/nanox/test_transaction_slot/part15/00018.png new file mode 100644 index 00000000..38b11c55 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part15/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00019.png b/tests/snapshots/nanox/test_transaction_slot/part15/00019.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part15/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part15/00020.png b/tests/snapshots/nanox/test_transaction_slot/part15/00020.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part15/00020.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00001.png b/tests/snapshots/nanox/test_transaction_slot/part2/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00002.png b/tests/snapshots/nanox/test_transaction_slot/part2/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00002.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00003.png b/tests/snapshots/nanox/test_transaction_slot/part2/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00004.png b/tests/snapshots/nanox/test_transaction_slot/part2/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00005.png b/tests/snapshots/nanox/test_transaction_slot/part2/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00006.png b/tests/snapshots/nanox/test_transaction_slot/part2/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00007.png b/tests/snapshots/nanox/test_transaction_slot/part2/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00008.png b/tests/snapshots/nanox/test_transaction_slot/part2/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00009.png b/tests/snapshots/nanox/test_transaction_slot/part2/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00010.png b/tests/snapshots/nanox/test_transaction_slot/part2/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00011.png b/tests/snapshots/nanox/test_transaction_slot/part2/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00012.png b/tests/snapshots/nanox/test_transaction_slot/part2/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00013.png b/tests/snapshots/nanox/test_transaction_slot/part2/00013.png index be855edc..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00014.png b/tests/snapshots/nanox/test_transaction_slot/part2/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00015.png b/tests/snapshots/nanox/test_transaction_slot/part2/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part2/00015.png and b/tests/snapshots/nanox/test_transaction_slot/part2/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00016.png b/tests/snapshots/nanox/test_transaction_slot/part2/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part2/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00017.png b/tests/snapshots/nanox/test_transaction_slot/part2/00017.png new file mode 100644 index 00000000..be855edc Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part2/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00018.png b/tests/snapshots/nanox/test_transaction_slot/part2/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part2/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part2/00019.png b/tests/snapshots/nanox/test_transaction_slot/part2/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part2/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00001.png b/tests/snapshots/nanox/test_transaction_slot/part3/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00002.png b/tests/snapshots/nanox/test_transaction_slot/part3/00002.png index 9e5fbace..5481d5da 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00002.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00002.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00003.png b/tests/snapshots/nanox/test_transaction_slot/part3/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00004.png b/tests/snapshots/nanox/test_transaction_slot/part3/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00005.png b/tests/snapshots/nanox/test_transaction_slot/part3/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00006.png b/tests/snapshots/nanox/test_transaction_slot/part3/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00007.png b/tests/snapshots/nanox/test_transaction_slot/part3/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00008.png b/tests/snapshots/nanox/test_transaction_slot/part3/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00009.png b/tests/snapshots/nanox/test_transaction_slot/part3/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00010.png b/tests/snapshots/nanox/test_transaction_slot/part3/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00011.png b/tests/snapshots/nanox/test_transaction_slot/part3/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00012.png b/tests/snapshots/nanox/test_transaction_slot/part3/00012.png index 819d3159..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00013.png b/tests/snapshots/nanox/test_transaction_slot/part3/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00014.png b/tests/snapshots/nanox/test_transaction_slot/part3/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part3/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part3/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00015.png b/tests/snapshots/nanox/test_transaction_slot/part3/00015.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part3/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00016.png b/tests/snapshots/nanox/test_transaction_slot/part3/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part3/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00017.png b/tests/snapshots/nanox/test_transaction_slot/part3/00017.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part3/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00018.png b/tests/snapshots/nanox/test_transaction_slot/part3/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part3/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part3/00019.png b/tests/snapshots/nanox/test_transaction_slot/part3/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part3/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00001.png b/tests/snapshots/nanox/test_transaction_slot/part4/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00003.png b/tests/snapshots/nanox/test_transaction_slot/part4/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00004.png b/tests/snapshots/nanox/test_transaction_slot/part4/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00005.png b/tests/snapshots/nanox/test_transaction_slot/part4/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00006.png b/tests/snapshots/nanox/test_transaction_slot/part4/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00007.png b/tests/snapshots/nanox/test_transaction_slot/part4/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00008.png b/tests/snapshots/nanox/test_transaction_slot/part4/00008.png index d5f0894e..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00009.png b/tests/snapshots/nanox/test_transaction_slot/part4/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00010.png b/tests/snapshots/nanox/test_transaction_slot/part4/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00011.png b/tests/snapshots/nanox/test_transaction_slot/part4/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00012.png b/tests/snapshots/nanox/test_transaction_slot/part4/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00013.png b/tests/snapshots/nanox/test_transaction_slot/part4/00013.png index 0b2d916f..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00014.png b/tests/snapshots/nanox/test_transaction_slot/part4/00014.png index 1e4be699..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00015.png b/tests/snapshots/nanox/test_transaction_slot/part4/00015.png index e84e8dfd..510dbb77 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part4/00015.png and b/tests/snapshots/nanox/test_transaction_slot/part4/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00016.png b/tests/snapshots/nanox/test_transaction_slot/part4/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part4/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00017.png b/tests/snapshots/nanox/test_transaction_slot/part4/00017.png new file mode 100644 index 00000000..0b2d916f Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part4/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00018.png b/tests/snapshots/nanox/test_transaction_slot/part4/00018.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part4/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part4/00019.png b/tests/snapshots/nanox/test_transaction_slot/part4/00019.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part4/00019.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00001.png b/tests/snapshots/nanox/test_transaction_slot/part6/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00003.png b/tests/snapshots/nanox/test_transaction_slot/part6/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00004.png b/tests/snapshots/nanox/test_transaction_slot/part6/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00005.png b/tests/snapshots/nanox/test_transaction_slot/part6/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00006.png b/tests/snapshots/nanox/test_transaction_slot/part6/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00007.png b/tests/snapshots/nanox/test_transaction_slot/part6/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00008.png b/tests/snapshots/nanox/test_transaction_slot/part6/00008.png index d5f0894e..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00009.png b/tests/snapshots/nanox/test_transaction_slot/part6/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00010.png b/tests/snapshots/nanox/test_transaction_slot/part6/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00011.png b/tests/snapshots/nanox/test_transaction_slot/part6/00011.png index 42cf0b73..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00012.png b/tests/snapshots/nanox/test_transaction_slot/part6/00012.png index bbe32c35..1030e3e1 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00013.png b/tests/snapshots/nanox/test_transaction_slot/part6/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00014.png b/tests/snapshots/nanox/test_transaction_slot/part6/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part6/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part6/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00015.png b/tests/snapshots/nanox/test_transaction_slot/part6/00015.png new file mode 100644 index 00000000..42cf0b73 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part6/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00016.png b/tests/snapshots/nanox/test_transaction_slot/part6/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part6/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00017.png b/tests/snapshots/nanox/test_transaction_slot/part6/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part6/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part6/00018.png b/tests/snapshots/nanox/test_transaction_slot/part6/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part6/00018.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00001.png b/tests/snapshots/nanox/test_transaction_slot/part8/00001.png index 5b962ee9..3d59a433 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00001.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00001.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00003.png b/tests/snapshots/nanox/test_transaction_slot/part8/00003.png index 81263f9e..d1930d7a 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00003.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00003.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00004.png b/tests/snapshots/nanox/test_transaction_slot/part8/00004.png index 4b4eb598..a4d302e5 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00004.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00004.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00005.png b/tests/snapshots/nanox/test_transaction_slot/part8/00005.png index d8a2740e..c22f01b2 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00005.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00005.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00006.png b/tests/snapshots/nanox/test_transaction_slot/part8/00006.png index 4d1a7f73..5474e7a3 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00006.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00006.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00007.png b/tests/snapshots/nanox/test_transaction_slot/part8/00007.png index 38f03f75..69a76097 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00007.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00007.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00008.png b/tests/snapshots/nanox/test_transaction_slot/part8/00008.png index 37312a69..8065791c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00008.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00008.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00009.png b/tests/snapshots/nanox/test_transaction_slot/part8/00009.png index 163e4981..d8a2740e 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00009.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00009.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00010.png b/tests/snapshots/nanox/test_transaction_slot/part8/00010.png index b5f70a2c..4d1a7f73 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00010.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00010.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00011.png b/tests/snapshots/nanox/test_transaction_slot/part8/00011.png index 51dc0ebb..38f03f75 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00011.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00011.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00012.png b/tests/snapshots/nanox/test_transaction_slot/part8/00012.png index bbe32c35..37312a69 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00012.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00012.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00013.png b/tests/snapshots/nanox/test_transaction_slot/part8/00013.png index 1e4be699..163e4981 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00013.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00013.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00014.png b/tests/snapshots/nanox/test_transaction_slot/part8/00014.png index e84e8dfd..b5f70a2c 100644 Binary files a/tests/snapshots/nanox/test_transaction_slot/part8/00014.png and b/tests/snapshots/nanox/test_transaction_slot/part8/00014.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00015.png b/tests/snapshots/nanox/test_transaction_slot/part8/00015.png new file mode 100644 index 00000000..510dbb77 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part8/00015.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00016.png b/tests/snapshots/nanox/test_transaction_slot/part8/00016.png new file mode 100644 index 00000000..8099d16e Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part8/00016.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00017.png b/tests/snapshots/nanox/test_transaction_slot/part8/00017.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part8/00017.png differ diff --git a/tests/snapshots/nanox/test_transaction_slot/part8/00018.png b/tests/snapshots/nanox/test_transaction_slot/part8/00018.png new file mode 100644 index 00000000..e84e8dfd Binary files /dev/null and b/tests/snapshots/nanox/test_transaction_slot/part8/00018.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/00001.png b/tests/snapshots/stax/test_app_mainmenu/00001.png deleted file mode 100644 index b470791c..00000000 Binary files a/tests/snapshots/stax/test_app_mainmenu/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_app_mainmenu/00002.png b/tests/snapshots/stax/test_app_mainmenu/00002.png deleted file mode 100644 index 627f1c4e..00000000 Binary files a/tests/snapshots/stax/test_app_mainmenu/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_app_mainmenu/00000.png b/tests/snapshots/stax/test_app_mainmenu/part0/00000.png similarity index 100% rename from tests/snapshots/stax/test_app_mainmenu/00000.png rename to tests/snapshots/stax/test_app_mainmenu/part0/00000.png diff --git a/tests/snapshots/stax/test_app_mainmenu/part0/00001.png b/tests/snapshots/stax/test_app_mainmenu/part0/00001.png new file mode 100644 index 00000000..b958f081 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part0/00001.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part0/00002.png b/tests/snapshots/stax/test_app_mainmenu/part0/00002.png new file mode 100644 index 00000000..2657f472 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part0/00002.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part0/00003.png b/tests/snapshots/stax/test_app_mainmenu/part0/00003.png new file mode 100644 index 00000000..3c697a96 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part0/00003.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part0/00004.png b/tests/snapshots/stax/test_app_mainmenu/part0/00004.png new file mode 100644 index 00000000..3daef8fd Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part0/00004.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part0/00005.png b/tests/snapshots/stax/test_app_mainmenu/part0/00005.png new file mode 100644 index 00000000..1ce39461 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part0/00005.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part0/00006.png b/tests/snapshots/stax/test_app_mainmenu/part0/00006.png new file mode 100644 index 00000000..13499fcc Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part0/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00007.png b/tests/snapshots/stax/test_app_mainmenu/part0/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00007.png rename to tests/snapshots/stax/test_app_mainmenu/part0/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00000.png b/tests/snapshots/stax/test_app_mainmenu/part1/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00000.png rename to tests/snapshots/stax/test_app_mainmenu/part1/00000.png diff --git a/tests/snapshots/stax/test_app_mainmenu/part1/00001.png b/tests/snapshots/stax/test_app_mainmenu/part1/00001.png new file mode 100644 index 00000000..24e46838 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part1/00001.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part1/00002.png b/tests/snapshots/stax/test_app_mainmenu/part1/00002.png new file mode 100644 index 00000000..f1c11f39 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part1/00002.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part1/00003.png b/tests/snapshots/stax/test_app_mainmenu/part1/00003.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part1/00003.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/00003.png b/tests/snapshots/stax/test_app_mainmenu/part1/00004.png similarity index 100% rename from tests/snapshots/stax/test_app_mainmenu/00003.png rename to tests/snapshots/stax/test_app_mainmenu/part1/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00007.png b/tests/snapshots/stax/test_app_mainmenu/part2/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00007.png rename to tests/snapshots/stax/test_app_mainmenu/part2/00000.png diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00001.png b/tests/snapshots/stax/test_app_mainmenu/part2/00001.png new file mode 100644 index 00000000..b958f081 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00001.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00002.png b/tests/snapshots/stax/test_app_mainmenu/part2/00002.png new file mode 100644 index 00000000..2657f472 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00002.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00003.png b/tests/snapshots/stax/test_app_mainmenu/part2/00003.png new file mode 100644 index 00000000..3c697a96 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00003.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00004.png b/tests/snapshots/stax/test_app_mainmenu/part2/00004.png new file mode 100644 index 00000000..3daef8fd Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00004.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00005.png b/tests/snapshots/stax/test_app_mainmenu/part2/00005.png new file mode 100644 index 00000000..e525ebe1 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00005.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00006.png b/tests/snapshots/stax/test_app_mainmenu/part2/00006.png new file mode 100644 index 00000000..cf41d9d2 Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00006.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/part2/00007.png b/tests/snapshots/stax/test_app_mainmenu/part2/00007.png new file mode 100644 index 00000000..13499fcc Binary files /dev/null and b/tests/snapshots/stax/test_app_mainmenu/part2/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00008.png b/tests/snapshots/stax/test_app_mainmenu/part2/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00008.png rename to tests/snapshots/stax/test_app_mainmenu/part2/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00001.png new file mode 100644 index 00000000..b958f081 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00002.png new file mode 100644 index 00000000..2657f472 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00003.png new file mode 100644 index 00000000..a8ac9237 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part0/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00000.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00000.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00001.png new file mode 100644 index 00000000..f9774f8f Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00002.png new file mode 100644 index 00000000..e9fd3917 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00003.png new file mode 100644 index 00000000..82bae18a Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00003.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00004.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00004.png new file mode 100644 index 00000000..58017a28 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00004.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00005.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00005.png new file mode 100644 index 00000000..008072bf Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00006.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00006.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00006.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00008.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00008.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00009.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00009.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00010.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00010.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00011.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00011.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00012.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00012.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00012.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part1/00012.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00000.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00000.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00001.png new file mode 100644 index 00000000..3d997e66 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00002.png new file mode 100644 index 00000000..e9fd3917 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00003.png new file mode 100644 index 00000000..3663879c Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00003.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00004.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00004.png new file mode 100644 index 00000000..467c8c88 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00004.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00005.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00005.png new file mode 100644 index 00000000..72726b61 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00006.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00006.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00006.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00008.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00008.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00009.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00009.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part2/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00000.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00000.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00001.png new file mode 100644 index 00000000..bd5f9f6d Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00002.png new file mode 100644 index 00000000..177d31f1 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00003.png new file mode 100644 index 00000000..bc238256 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00003.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00004.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00004.png new file mode 100644 index 00000000..5b7bd16a Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00004.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00005.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00005.png new file mode 100644 index 00000000..79234cfc Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00005.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00006.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00006.png new file mode 100644 index 00000000..19e367ab Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00007.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00008.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part3/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00000.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00000.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00001.png new file mode 100644 index 00000000..cf6c37a9 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00002.png new file mode 100644 index 00000000..177d31f1 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00003.png new file mode 100644 index 00000000..2822b460 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00004.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00004.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00005.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00005.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00005.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00006.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00006.png new file mode 100644 index 00000000..19e367ab Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00007.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00008.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part4/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00000.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00000.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00001.png new file mode 100644 index 00000000..f0219758 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00002.png new file mode 100644 index 00000000..5210072f Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00003.png new file mode 100644 index 00000000..be6c4d28 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00003.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00004.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00004.png new file mode 100644 index 00000000..1aa19c10 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00004.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00005.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00005.png new file mode 100644 index 00000000..3f7f79bc Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00005.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00006.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00006.png new file mode 100644 index 00000000..fda980a1 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00006.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00007.png new file mode 100644 index 00000000..28bdc5e9 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00007.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00008.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00008.png new file mode 100644 index 00000000..04276c13 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00008.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00009.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00009.png new file mode 100644 index 00000000..fa8efe20 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00009.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00010.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00010.png new file mode 100644 index 00000000..d5f29cf0 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00010.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00011.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00011.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00012.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00012.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00012.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00012.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00013.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00013.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00013.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00014.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00014.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00014.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part5/00014.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00000.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00000.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00000.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00001.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00001.png new file mode 100644 index 00000000..b62d6b10 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00001.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00002.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00002.png new file mode 100644 index 00000000..ea141579 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00002.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00003.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00003.png new file mode 100644 index 00000000..3af90505 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00003.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00004.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00004.png new file mode 100644 index 00000000..75e28c67 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00004.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00005.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00005.png new file mode 100644 index 00000000..e93a0fd1 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00005.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00006.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00006.png new file mode 100644 index 00000000..19886890 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00006.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00007.png new file mode 100644 index 00000000..417e4b61 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00007.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00008.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00008.png new file mode 100644 index 00000000..9cbfd745 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00008.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00009.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00009.png new file mode 100644 index 00000000..8565b1da Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00009.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00010.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00010.png new file mode 100644 index 00000000..6a800216 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00010.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00011.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00011.png new file mode 100644 index 00000000..51269f35 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00011.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00012.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00012.png new file mode 100644 index 00000000..8d1a3a28 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00012.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00013.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00013.png new file mode 100644 index 00000000..c86db05c Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00013.png differ diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00014.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00014.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00014.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00015.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00015.png diff --git a/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00016.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00016.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00016.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00007.png b/tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00017.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00007.png rename to tests/snapshots/stax/test_arbitrary_transaction_signing_expert/part6/00017.png diff --git a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00001.png b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00001.png index 2f247a53..6603d550 100644 Binary files a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00001.png and b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00001.png differ diff --git a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png index eedb6a7b..9a596bb0 100644 Binary files a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png and b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png differ diff --git a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00003.png b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00003.png index f59899e9..13499fcc 100644 Binary files a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00003.png and b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00003.png differ diff --git a/tests/snapshots/stax/test_get_public_key_expert/00001.png b/tests/snapshots/stax/test_get_public_key_expert/00001.png index b470791c..b958f081 100644 Binary files a/tests/snapshots/stax/test_get_public_key_expert/00001.png and b/tests/snapshots/stax/test_get_public_key_expert/00001.png differ diff --git a/tests/snapshots/stax/test_get_public_key_expert/00002.png b/tests/snapshots/stax/test_get_public_key_expert/00002.png index 627f1c4e..2657f472 100644 Binary files a/tests/snapshots/stax/test_get_public_key_expert/00002.png and b/tests/snapshots/stax/test_get_public_key_expert/00002.png differ diff --git a/tests/snapshots/stax/test_get_public_key_expert/00003.png b/tests/snapshots/stax/test_get_public_key_expert/00003.png index d526f4d7..a8ac9237 100644 Binary files a/tests/snapshots/stax/test_get_public_key_expert/00003.png and b/tests/snapshots/stax/test_get_public_key_expert/00003.png differ diff --git a/tests/snapshots/stax/test_get_public_key_slot/part0/00003.png b/tests/snapshots/stax/test_get_public_key_slot/part0/00003.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_get_public_key_slot/part0/00003.png and b/tests/snapshots/stax/test_get_public_key_slot/part0/00003.png differ diff --git a/tests/snapshots/stax/test_get_public_key_slot/part1/00003.png b/tests/snapshots/stax/test_get_public_key_slot/part1/00003.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_get_public_key_slot/part1/00003.png and b/tests/snapshots/stax/test_get_public_key_slot/part1/00003.png differ diff --git a/tests/snapshots/stax/test_get_slot_accepted/part0/00003.png b/tests/snapshots/stax/test_get_slot_accepted/part0/00003.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_get_slot_accepted/part0/00003.png and b/tests/snapshots/stax/test_get_slot_accepted/part0/00003.png differ diff --git a/tests/snapshots/stax/test_get_slot_accepted/part1/00004.png b/tests/snapshots/stax/test_get_slot_accepted/part1/00004.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_get_slot_accepted/part1/00004.png and b/tests/snapshots/stax/test_get_slot_accepted/part1/00004.png differ diff --git a/tests/snapshots/stax/test_get_slot_accepted/part2/00003.png b/tests/snapshots/stax/test_get_slot_accepted/part2/00003.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_get_slot_accepted/part2/00003.png and b/tests/snapshots/stax/test_get_slot_accepted/part2/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00000.png b/tests/snapshots/stax/test_message_normal/part0/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00000.png rename to tests/snapshots/stax/test_message_normal/part0/00000.png diff --git a/tests/snapshots/stax/test_message_normal/part0/00001.png b/tests/snapshots/stax/test_message_normal/part0/00001.png new file mode 100644 index 00000000..53374137 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part0/00001.png differ diff --git a/tests/snapshots/stax/test_message_normal/part0/00002.png b/tests/snapshots/stax/test_message_normal/part0/00002.png new file mode 100644 index 00000000..f1c11f39 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part0/00002.png differ diff --git a/tests/snapshots/stax/test_message_normal/part0/00003.png b/tests/snapshots/stax/test_message_normal/part0/00003.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part0/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00007.png b/tests/snapshots/stax/test_message_normal/part0/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00007.png rename to tests/snapshots/stax/test_message_normal/part0/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00007.png b/tests/snapshots/stax/test_message_normal/part1/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00007.png rename to tests/snapshots/stax/test_message_normal/part1/00000.png diff --git a/tests/snapshots/stax/test_message_normal/part1/00001.png b/tests/snapshots/stax/test_message_normal/part1/00001.png new file mode 100644 index 00000000..b958f081 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part1/00001.png differ diff --git a/tests/snapshots/stax/test_message_normal/part1/00002.png b/tests/snapshots/stax/test_message_normal/part1/00002.png new file mode 100644 index 00000000..2657f472 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part1/00002.png differ diff --git a/tests/snapshots/stax/test_message_normal/part1/00003.png b/tests/snapshots/stax/test_message_normal/part1/00003.png new file mode 100644 index 00000000..a8ac9237 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part1/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00007.png b/tests/snapshots/stax/test_message_normal/part1/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00007.png rename to tests/snapshots/stax/test_message_normal/part1/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00007.png b/tests/snapshots/stax/test_message_normal/part1/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00007.png rename to tests/snapshots/stax/test_message_normal/part1/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00000.png b/tests/snapshots/stax/test_message_normal/part2/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00000.png rename to tests/snapshots/stax/test_message_normal/part2/00000.png diff --git a/tests/snapshots/stax/test_message_normal/part2/00001.png b/tests/snapshots/stax/test_message_normal/part2/00001.png new file mode 100644 index 00000000..dc1361ec Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part2/00001.png differ diff --git a/tests/snapshots/stax/test_message_normal/part2/00002.png b/tests/snapshots/stax/test_message_normal/part2/00002.png new file mode 100644 index 00000000..9e4cdb71 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part2/00002.png differ diff --git a/tests/snapshots/stax/test_message_normal/part2/00003.png b/tests/snapshots/stax/test_message_normal/part2/00003.png new file mode 100644 index 00000000..6b9ca454 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part2/00003.png differ diff --git a/tests/snapshots/stax/test_message_normal/part2/00004.png b/tests/snapshots/stax/test_message_normal/part2/00004.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part2/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00007.png b/tests/snapshots/stax/test_message_normal/part2/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00007.png rename to tests/snapshots/stax/test_message_normal/part2/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00000.png b/tests/snapshots/stax/test_message_normal/part3/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00000.png rename to tests/snapshots/stax/test_message_normal/part3/00000.png diff --git a/tests/snapshots/stax/test_message_normal/part3/00001.png b/tests/snapshots/stax/test_message_normal/part3/00001.png new file mode 100644 index 00000000..fa343ee5 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part3/00001.png differ diff --git a/tests/snapshots/stax/test_message_normal/part3/00002.png b/tests/snapshots/stax/test_message_normal/part3/00002.png new file mode 100644 index 00000000..98af43ea Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part3/00002.png differ diff --git a/tests/snapshots/stax/test_message_normal/part3/00003.png b/tests/snapshots/stax/test_message_normal/part3/00003.png new file mode 100644 index 00000000..6b9ca454 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part3/00003.png differ diff --git a/tests/snapshots/stax/test_message_normal/part3/00004.png b/tests/snapshots/stax/test_message_normal/part3/00004.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part3/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00011.png b/tests/snapshots/stax/test_message_normal/part3/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00011.png rename to tests/snapshots/stax/test_message_normal/part3/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00000.png b/tests/snapshots/stax/test_message_normal/part4/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00000.png rename to tests/snapshots/stax/test_message_normal/part4/00000.png diff --git a/tests/snapshots/stax/test_message_normal/part4/00001.png b/tests/snapshots/stax/test_message_normal/part4/00001.png new file mode 100644 index 00000000..dc1361ec Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part4/00001.png differ diff --git a/tests/snapshots/stax/test_message_normal/part4/00002.png b/tests/snapshots/stax/test_message_normal/part4/00002.png new file mode 100644 index 00000000..9e4cdb71 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part4/00002.png differ diff --git a/tests/snapshots/stax/test_message_normal/part4/00003.png b/tests/snapshots/stax/test_message_normal/part4/00003.png new file mode 100644 index 00000000..6b9ca454 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part4/00003.png differ diff --git a/tests/snapshots/stax/test_message_normal/part4/00004.png b/tests/snapshots/stax/test_message_normal/part4/00004.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part4/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00011.png b/tests/snapshots/stax/test_message_normal/part4/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00011.png rename to tests/snapshots/stax/test_message_normal/part4/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00011.png b/tests/snapshots/stax/test_message_normal/part5/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00011.png rename to tests/snapshots/stax/test_message_normal/part5/00000.png diff --git a/tests/snapshots/stax/test_message_normal/part5/00001.png b/tests/snapshots/stax/test_message_normal/part5/00001.png new file mode 100644 index 00000000..b958f081 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part5/00001.png differ diff --git a/tests/snapshots/stax/test_message_normal/part5/00002.png b/tests/snapshots/stax/test_message_normal/part5/00002.png new file mode 100644 index 00000000..a8ac9237 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part5/00002.png differ diff --git a/tests/snapshots/stax/test_message_normal/part5/00003.png b/tests/snapshots/stax/test_message_normal/part5/00003.png new file mode 100644 index 00000000..2657f472 Binary files /dev/null and b/tests/snapshots/stax/test_message_normal/part5/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00011.png b/tests/snapshots/stax/test_message_normal/part5/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00011.png rename to tests/snapshots/stax/test_message_normal/part5/00004.png diff --git a/tests/snapshots/stax/test_transaction_expert/part0/00001.png b/tests/snapshots/stax/test_transaction_expert/part0/00001.png index b470791c..b958f081 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part0/00001.png and b/tests/snapshots/stax/test_transaction_expert/part0/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part0/00002.png b/tests/snapshots/stax/test_transaction_expert/part0/00002.png index 627f1c4e..2657f472 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part0/00002.png and b/tests/snapshots/stax/test_transaction_expert/part0/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part0/00003.png b/tests/snapshots/stax/test_transaction_expert/part0/00003.png index d526f4d7..a8ac9237 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part0/00003.png and b/tests/snapshots/stax/test_transaction_expert/part0/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part1/00001.png b/tests/snapshots/stax/test_transaction_expert/part1/00001.png index 23b44e3e..9128c56e 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part1/00001.png and b/tests/snapshots/stax/test_transaction_expert/part1/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part1/00002.png b/tests/snapshots/stax/test_transaction_expert/part1/00002.png index a2e7a49c..13dbf109 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part1/00002.png and b/tests/snapshots/stax/test_transaction_expert/part1/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part1/00003.png b/tests/snapshots/stax/test_transaction_expert/part1/00003.png index fb625e5a..234968d1 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part1/00003.png and b/tests/snapshots/stax/test_transaction_expert/part1/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part1/00006.png b/tests/snapshots/stax/test_transaction_expert/part1/00006.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part1/00006.png and b/tests/snapshots/stax/test_transaction_expert/part1/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part2/00001.png b/tests/snapshots/stax/test_transaction_expert/part2/00001.png index 23b44e3e..9128c56e 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part2/00001.png and b/tests/snapshots/stax/test_transaction_expert/part2/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part2/00002.png b/tests/snapshots/stax/test_transaction_expert/part2/00002.png index a2e7a49c..13dbf109 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part2/00002.png and b/tests/snapshots/stax/test_transaction_expert/part2/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part2/00003.png b/tests/snapshots/stax/test_transaction_expert/part2/00003.png index fb625e5a..234968d1 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part2/00003.png and b/tests/snapshots/stax/test_transaction_expert/part2/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_expert/part2/00006.png b/tests/snapshots/stax/test_transaction_expert/part2/00006.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_expert/part2/00006.png and b/tests/snapshots/stax/test_transaction_expert/part2/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00000.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00001.png new file mode 100644 index 00000000..0e302d91 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00002.png new file mode 100644 index 00000000..3acbc25f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00003.png new file mode 100644 index 00000000..c723c1aa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00004.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00005.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00006.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00000.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00001.png new file mode 100644 index 00000000..1df1d1c9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00002.png new file mode 100644 index 00000000..3acbc25f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00003.png new file mode 100644 index 00000000..c723c1aa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00004.png new file mode 100644 index 00000000..5b7bd16a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00005.png new file mode 100644 index 00000000..79234cfc Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00006.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FA.01-Testnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00000.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00001.png new file mode 100644 index 00000000..4b846bac Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00002.png new file mode 100644 index 00000000..3acbc25f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00003.png new file mode 100644 index 00000000..c723c1aa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00004.png new file mode 100644 index 00000000..5c8ec2c1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00005.png new file mode 100644 index 00000000..30d3b010 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00006.png new file mode 100644 index 00000000..5ff4c5f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FA.02-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00000.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00001.png new file mode 100644 index 00000000..dcb5d2bb Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00002.png new file mode 100644 index 00000000..3acbc25f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00003.png new file mode 100644 index 00000000..c723c1aa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00004.png new file mode 100644 index 00000000..5b7bd16a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00005.png new file mode 100644 index 00000000..79234cfc Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00006.png new file mode 100644 index 00000000..5ff4c5f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00008.png b/tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FA.02-Testnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00000.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00001.png new file mode 100644 index 00000000..9128c56e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00002.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00002.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00003.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00003.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00004.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00005.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00007.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00007.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00000.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00001.png new file mode 100644 index 00000000..c4804dec Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00004.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00005.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00007.png b/tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00007.png rename to tests/snapshots/stax/test_transaction_manifest/FA.03-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00000.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00001.png new file mode 100644 index 00000000..56ba5b92 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00002.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00002.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00003.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00003.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00004.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00005.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00007.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00007.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00000.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00001.png new file mode 100644 index 00000000..f9876244 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00002.png new file mode 100644 index 00000000..a21f44a1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00003.png new file mode 100644 index 00000000..824299f9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00004.png new file mode 100644 index 00000000..ef745bbb Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00005.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00007.png b/tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00007.png rename to tests/snapshots/stax/test_transaction_manifest/FT.01-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00000.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00001.png new file mode 100644 index 00000000..19990f9d Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00002.png new file mode 100644 index 00000000..0516e343 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00003.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00003.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00004.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00005.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00006.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00008.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00000.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00001.png new file mode 100644 index 00000000..f80c54a1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00002.png new file mode 100644 index 00000000..681fcd32 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00005.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00006.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00008.png b/tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FT.02-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00000.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00001.png new file mode 100644 index 00000000..c6ab34cc Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00002.png new file mode 100644 index 00000000..127818a9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00003.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00003.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00004.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00005.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00006.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00008.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00000.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00001.png new file mode 100644 index 00000000..88450dd9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00002.png new file mode 100644 index 00000000..de3b657c Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00005.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00006.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00008.png b/tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00008.png rename to tests/snapshots/stax/test_transaction_manifest/FT.03-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00000.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00001.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00001.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00002.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00002.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00003.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00003.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00004.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00005.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00006.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00000.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00001.png new file mode 100644 index 00000000..03a0a4b7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00002.png new file mode 100644 index 00000000..1d312dc7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00003.png new file mode 100644 index 00000000..873476c1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00004.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00005.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00006.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.01-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00000.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00001.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00001.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00002.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00002.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00003.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00003.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00004.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00005.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00006.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part1/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00007.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00007.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00000.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00000.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00001.png new file mode 100644 index 00000000..7b6a9ae4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00004.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00004.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00005.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00005.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00006.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part10/00006.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00007.png b/tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00007.png rename to tests/snapshots/stax/test_transaction_manifest/FUSD.02-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00000.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00000.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00001.png new file mode 100644 index 00000000..2145e547 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00002.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00002.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00003.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00003.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00004.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00004.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00005.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00005.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00007.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00007.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00000.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00000.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00001.png new file mode 100644 index 00000000..86380770 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00004.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00004.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00005.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00005.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00007.png b/tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00007.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.01-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00000.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00000.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00001.png new file mode 100644 index 00000000..8165151a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00002.png new file mode 100644 index 00000000..6ef25865 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00003.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00003.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00004.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00004.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00005.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00005.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00007.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00007.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00008.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00008.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00000.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00000.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00001.png new file mode 100644 index 00000000..ad177591 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00002.png new file mode 100644 index 00000000..0c0a2e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00005.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00005.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00006.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00006.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00008.png b/tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00008.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.02-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00000.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00000.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00001.png new file mode 100644 index 00000000..ab76f2b2 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00002.png new file mode 100644 index 00000000..c6c1cc18 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00003.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00003.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00004.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00004.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00005.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00005.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00007.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00007.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00000.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00000.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00001.png new file mode 100644 index 00000000..27b59c73 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00002.png new file mode 100644 index 00000000..fb4be4b4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00005.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00005.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00006.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00006.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00008.png b/tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00008.png rename to tests/snapshots/stax/test_transaction_manifest/NFT.03-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00001.png new file mode 100644 index 00000000..277f6a41 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.01-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00001.png new file mode 100644 index 00000000..68f699b9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00003.png new file mode 100644 index 00000000..213a8db6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00004.png new file mode 100644 index 00000000..2c99036f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.02-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00002.png new file mode 100644 index 00000000..566584a3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00005.png new file mode 100644 index 00000000..b02f9a2f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part22/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00011.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Mainnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00001.png new file mode 100644 index 00000000..5542f1f4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00002.png new file mode 100644 index 00000000..566584a3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00005.png new file mode 100644 index 00000000..b02f9a2f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00006.png new file mode 100644 index 00000000..2d5a9b84 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00007.png new file mode 100644 index 00000000..da0fc555 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00011.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-1-Testnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00002.png new file mode 100644 index 00000000..566584a3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part23/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part60/00011.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Mainnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00001.png new file mode 100644 index 00000000..5542f1f4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00002.png new file mode 100644 index 00000000..566584a3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00006.png new file mode 100644 index 00000000..2d5a9b84 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00007.png new file mode 100644 index 00000000..da0fc555 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-2-Testnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00002.png new file mode 100644 index 00000000..990d8c2d Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00006.png new file mode 100644 index 00000000..572873db Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part24/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00011.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00012.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00012.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00012.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Mainnet/00012.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part48/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part48/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00001.png new file mode 100644 index 00000000..f1466aa1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00002.png new file mode 100644 index 00000000..990d8c2d Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00006.png new file mode 100644 index 00000000..572873db Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00007.png new file mode 100644 index 00000000..404c6770 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00008.png new file mode 100644 index 00000000..db979547 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00010.png new file mode 100644 index 00000000..8275e91b Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00010.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00012.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-3-Testnet/00012.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00002.png new file mode 100644 index 00000000..6d927d18 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00006.png new file mode 100644 index 00000000..83f3e412 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00007.png new file mode 100644 index 00000000..8efd54d8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00008.png new file mode 100644 index 00000000..73ab5fba Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00011.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00011.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00011.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00012.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00012.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00012.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00012.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00013.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00013.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part25/00013.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00013.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00014.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00014.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00014.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Mainnet/00014.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00001.png new file mode 100644 index 00000000..84d9a21e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00002.png new file mode 100644 index 00000000..6d927d18 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00006.png new file mode 100644 index 00000000..83f3e412 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00007.png new file mode 100644 index 00000000..8efd54d8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00008.png new file mode 100644 index 00000000..73ab5fba Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00009.png new file mode 100644 index 00000000..f78aa4bf Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00010.png new file mode 100644 index 00000000..77b815e6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00010.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00011.png new file mode 100644 index 00000000..b87affec Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00012.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00012.png new file mode 100644 index 00000000..98f4fb95 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00012.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00013.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00013.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00013.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00013.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00014.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part58/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-4-Testnet/00014.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00002.png new file mode 100644 index 00000000..0e2664f6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00003.png new file mode 100644 index 00000000..0572ccb6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00004.png new file mode 100644 index 00000000..958daf3c Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00005.png new file mode 100644 index 00000000..d672773b Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00006.png new file mode 100644 index 00000000..f81eca53 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00007.png new file mode 100644 index 00000000..46f1dcdf Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00008.png new file mode 100644 index 00000000..4c4333af Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00011.png new file mode 100644 index 00000000..b87affec Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00012.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00012.png new file mode 100644 index 00000000..98f4fb95 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00012.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00013.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00013.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00013.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00014.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Mainnet/00014.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00001.png new file mode 100644 index 00000000..84d9a21e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00002.png new file mode 100644 index 00000000..0e2664f6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00003.png new file mode 100644 index 00000000..0572ccb6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00004.png new file mode 100644 index 00000000..958daf3c Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00005.png new file mode 100644 index 00000000..d672773b Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00006.png new file mode 100644 index 00000000..f81eca53 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00007.png new file mode 100644 index 00000000..46f1dcdf Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00008.png new file mode 100644 index 00000000..4c4333af Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00009.png new file mode 100644 index 00000000..f78aa4bf Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00010.png new file mode 100644 index 00000000..77b815e6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00010.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00011.png new file mode 100644 index 00000000..b87affec Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00012.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00012.png new file mode 100644 index 00000000..98f4fb95 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00012.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00013.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00013.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00013.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00014.png similarity index 100% rename from tests/snapshots/stax/test_transaction_params/part10/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.03-Testnet/00014.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part26/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part26/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_params/part11/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_params/part11/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00001.png new file mode 100644 index 00000000..8271a5d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part58/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_params/part12/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_params/part12/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-1-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00003.png new file mode 100644 index 00000000..7056f384 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00004.png new file mode 100644 index 00000000..5c8ec2c1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00005.png new file mode 100644 index 00000000..30d3b010 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00006.png new file mode 100644 index 00000000..5ff4c5f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part27/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_params/part9/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_params/part9/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00001.png new file mode 100644 index 00000000..9e622ee2 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00003.png new file mode 100644 index 00000000..7056f384 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00004.png new file mode 100644 index 00000000..5b7bd16a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00005.png new file mode 100644 index 00000000..79234cfc Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00006.png new file mode 100644 index 00000000..5ff4c5f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-2-Testnet/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part56/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00003.png new file mode 100644 index 00000000..e8351097 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00004.png new file mode 100644 index 00000000..8d6d9a5a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00005.png new file mode 100644 index 00000000..cb930796 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part28/00007.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00011.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Mainnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part57/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00001.png new file mode 100644 index 00000000..22cccbf0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part60/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00003.png new file mode 100644 index 00000000..e8351097 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00004.png new file mode 100644 index 00000000..8d6d9a5a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00005.png new file mode 100644 index 00000000..cb930796 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00006.png new file mode 100644 index 00000000..2d5a9b84 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00007.png new file mode 100644 index 00000000..da0fc555 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00008.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00009.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00010.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00011.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-3-Testnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part58/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00001.png new file mode 100644 index 00000000..4eb58d67 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00002.png new file mode 100644 index 00000000..f6c80b65 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00003.png new file mode 100644 index 00000000..781b34b0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00004.png new file mode 100644 index 00000000..440c706f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00005.png new file mode 100644 index 00000000..c3cbc8eb Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00006.png new file mode 100644 index 00000000..04c00a99 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00007.png new file mode 100644 index 00000000..2cde1408 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00008.png new file mode 100644 index 00000000..e2b5c5d9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00009.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00010.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Mainnet/00010.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part59/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00001.png new file mode 100644 index 00000000..15c462e8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00002.png new file mode 100644 index 00000000..f6c80b65 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00003.png new file mode 100644 index 00000000..781b34b0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00004.png new file mode 100644 index 00000000..440c706f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00005.png new file mode 100644 index 00000000..5de9088a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00006.png new file mode 100644 index 00000000..becffb46 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00007.png new file mode 100644 index 00000000..2cde1408 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00008.png new file mode 100644 index 00000000..e2b5c5d9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00009.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00009.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00010.png b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00010.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.04-Testnet/00010.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part29/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part29/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part60/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00001.png new file mode 100644 index 00000000..2effdda8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-1-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part58/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00001.png new file mode 100644 index 00000000..2effdda8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.05-2-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00000.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00000.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00000.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00001.png new file mode 100644 index 00000000..d266faa7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00002.png new file mode 100644 index 00000000..fe936b1c Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-1-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part58/00006.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00001.png new file mode 100644 index 00000000..d266faa7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00002.png new file mode 100644 index 00000000..c0a0fae7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.06-2-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00001.png new file mode 100644 index 00000000..f5dac0e5 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00001.png new file mode 100644 index 00000000..8ededdf2 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-1-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00001.png new file mode 100644 index 00000000..f5dac0e5 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00001.png new file mode 100644 index 00000000..8ededdf2 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.07-2-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00001.png new file mode 100644 index 00000000..b85e99a0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00002.png new file mode 100644 index 00000000..62af9c0f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-1-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00001.png new file mode 100644 index 00000000..b85e99a0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00002.png new file mode 100644 index 00000000..4570f780 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.08-2-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00001.png new file mode 100644 index 00000000..12e93686 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.09-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00001.png new file mode 100644 index 00000000..8d080294 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00002.png new file mode 100644 index 00000000..4570f780 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00001.png new file mode 100644 index 00000000..b957c19f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00002.png new file mode 100644 index 00000000..4570f780 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-1-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00001.png new file mode 100644 index 00000000..8d080294 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00002.png new file mode 100644 index 00000000..62af9c0f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00001.png new file mode 100644 index 00000000..b957c19f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00002.png new file mode 100644 index 00000000..62af9c0f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.10-2-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00002.png new file mode 100644 index 00000000..62af9c0f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00004.png new file mode 100644 index 00000000..56ff37e8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00005.png new file mode 100644 index 00000000..04c72fe0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00001.png new file mode 100644 index 00000000..f6c30fe3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00002.png new file mode 100644 index 00000000..62af9c0f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-1-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00002.png new file mode 100644 index 00000000..4570f780 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00004.png new file mode 100644 index 00000000..56ff37e8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00005.png new file mode 100644 index 00000000..04c72fe0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00001.png new file mode 100644 index 00000000..f6c30fe3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00002.png new file mode 100644 index 00000000..4570f780 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00003.png new file mode 100644 index 00000000..21d66155 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00004.png new file mode 100644 index 00000000..f9ae77d4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00005.png new file mode 100644 index 00000000..84d622f3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.11-2-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00001.png new file mode 100644 index 00000000..0ce64c5e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00002.png new file mode 100644 index 00000000..a043dcb5 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00003.png new file mode 100644 index 00000000..824299f9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00004.png new file mode 100644 index 00000000..ef745bbb Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-1-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00001.png new file mode 100644 index 00000000..0ce64c5e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00002.png new file mode 100644 index 00000000..25553ea1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00003.png new file mode 100644 index 00000000..824299f9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00004.png new file mode 100644 index 00000000..ef745bbb Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.12-2-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00001.png new file mode 100644 index 00000000..2abcb074 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00002.png new file mode 100644 index 00000000..f4d75a4a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00003.png new file mode 100644 index 00000000..213a8db6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00004.png new file mode 100644 index 00000000..2c99036f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.13-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00003.png new file mode 100644 index 00000000..7d98e488 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00004.png new file mode 100644 index 00000000..440d03e2 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00005.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00001.png new file mode 100644 index 00000000..e63d23ea Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00002.png new file mode 100644 index 00000000..32840b2c Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.14-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00001.png new file mode 100644 index 00000000..5e8d68c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.15-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00001.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00002.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00003.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00004.png rename to tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00001.png new file mode 100644 index 00000000..f4066117 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00002.png new file mode 100644 index 00000000..d0fa6985 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/SCO.16-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00001.png new file mode 100644 index 00000000..6da719fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00005.png rename to tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00001.png new file mode 100644 index 00000000..9c19c062 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00005.png rename to tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.01-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00001.png new file mode 100644 index 00000000..c9f65c3c Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00005.png rename to tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00001.png new file mode 100644 index 00000000..c0107e00 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00005.png rename to tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00006.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.02-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part54/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00002.png new file mode 100644 index 00000000..566584a3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00003.png new file mode 100644 index 00000000..eac68ab0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part55/00005.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part3/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00008.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00008.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part60/00008.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00008.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00009.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00009.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part60/00009.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00009.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00010.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part60/00010.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00011.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Mainnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00001.png new file mode 100644 index 00000000..5542f1f4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00002.png new file mode 100644 index 00000000..566584a3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00003.png new file mode 100644 index 00000000..eac68ab0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00004.png new file mode 100644 index 00000000..1629e4bc Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00005.png new file mode 100644 index 00000000..7c1ee4be Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00006.png new file mode 100644 index 00000000..2d5a9b84 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00007.png new file mode 100644 index 00000000..da0fc555 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00008.png new file mode 100644 index 00000000..63ccb900 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00009.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00009.png new file mode 100644 index 00000000..0c38ef91 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part12/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00010.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part12/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00010.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00011.png b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00011.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.06-Testnet/00011.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00001.png new file mode 100644 index 00000000..4091408d Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part13/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00001.png new file mode 100644 index 00000000..900b98ca Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.08-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00001.png new file mode 100644 index 00000000..1f46e768 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00001.png new file mode 100644 index 00000000..d1203603 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.09-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00001.png new file mode 100644 index 00000000..ef2a7589 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part17/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00001.png new file mode 100644 index 00000000..d5fc0d5b Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part18/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.10-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00001.png new file mode 100644 index 00000000..cbff15c0 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00001.png new file mode 100644 index 00000000..4bad2aaa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part2/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.11-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00005.png rename to tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00006.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00001.png new file mode 100644 index 00000000..b2e95c69 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00002.png new file mode 100644 index 00000000..1d312dc7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00003.png new file mode 100644 index 00000000..873476c1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00004.png new file mode 100644 index 00000000..ef6cce46 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part20/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part20/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00006.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.12-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00001.png new file mode 100644 index 00000000..dfcab440 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00001.png new file mode 100644 index 00000000..fd14d29f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part37/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part37/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.13-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00001.png new file mode 100644 index 00000000..7dab0ffa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part4/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00001.png new file mode 100644 index 00000000..a56b2f19 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part42/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part42/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.14-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part11/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part11/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00002.png new file mode 100644 index 00000000..c75bf2a9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00004.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00004.png rename to tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00004.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part30/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part30/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Mainnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00001.png new file mode 100644 index 00000000..249600e9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00002.png new file mode 100644 index 00000000..c75bf2a9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00003.png new file mode 100644 index 00000000..9aa61ba4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00004.png new file mode 100644 index 00000000..2743c3c3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00005.png new file mode 100644 index 00000000..0646bd44 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00006.png new file mode 100644 index 00000000..d8282095 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part31/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00007.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part31/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00007.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00008.png b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.16-Testnet/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part21/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part21/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00002.png new file mode 100644 index 00000000..75d7bab5 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00003.png new file mode 100644 index 00000000..7d98e488 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00004.png new file mode 100644 index 00000000..440d03e2 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part43/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part43/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00001.png new file mode 100644 index 00000000..68f699b9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00002.png new file mode 100644 index 00000000..75d7bab5 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00003.png new file mode 100644 index 00000000..213a8db6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00004.png new file mode 100644 index 00000000..2c99036f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part44/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part44/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.17-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00001.png new file mode 100644 index 00000000..5cdbbe32 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part45/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part45/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00001.png new file mode 100644 index 00000000..b97534c5 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part49/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part49/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.19-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part14/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part14/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part5/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00001.png new file mode 100644 index 00000000..0d112615 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part50/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.20-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part15/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part15/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part51/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00001.png new file mode 100644 index 00000000..ed0f20b4 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.21-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part16/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part16/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00001.png new file mode 100644 index 00000000..9405a03a Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.22-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00001.png new file mode 100644 index 00000000..dfcab440 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part6/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00006.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00006.png rename to tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00001.png new file mode 100644 index 00000000..fd14d29f Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part32/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part32/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.23-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00001.png new file mode 100644 index 00000000..7dab0ffa Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part7/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part33/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00001.png new file mode 100644 index 00000000..a56b2f19 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part34/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.24-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part19/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part19/00001.png rename to tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00002.png rename to tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part9/00003.png rename to tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part35/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part35/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00001.png new file mode 100644 index 00000000..c767e0ec Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part36/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part36/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TH.25-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00001.png new file mode 100644 index 00000000..892b6b30 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00002.png new file mode 100644 index 00000000..13dbf109 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00003.png new file mode 100644 index 00000000..234968d1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part38/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00001.png new file mode 100644 index 00000000..9c627f5b Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part39/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.01-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00001.png new file mode 100644 index 00000000..782c6297 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00002.png new file mode 100644 index 00000000..13dbf109 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00003.png new file mode 100644 index 00000000..234968d1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part40/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part40/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00001.png new file mode 100644 index 00000000..26810ef3 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00002.png new file mode 100644 index 00000000..884fb350 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00003.png new file mode 100644 index 00000000..824299f9 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00004.png new file mode 100644 index 00000000..ef745bbb Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part41/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part41/00007.png rename to tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/TS.02-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part52/00001.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part52/00001.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00002.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00002.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00002.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00002.png diff --git a/tests/snapshots/stax/test_transaction_manifest/part8/00003.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00003.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part8/00003.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00003.png diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00004.png new file mode 100644 index 00000000..ef6cce46 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part46/00007.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part46/00007.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00006.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Mainnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00001.png new file mode 100644 index 00000000..2751a626 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00002.png new file mode 100644 index 00000000..1d312dc7 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00003.png new file mode 100644 index 00000000..873476c1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00004.png new file mode 100644 index 00000000..ef6cce46 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part47/00007.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00005.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part47/00007.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00005.png diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00006.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.01-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part53/00001.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00001.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part53/00001.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00001.png diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00002.png new file mode 100644 index 00000000..13dbf109 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00003.png new file mode 100644 index 00000000..234968d1 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00007.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00006.png similarity index 100% rename from tests/snapshots/stax/test_transaction_manifest/part58/00007.png rename to tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00006.png diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Mainnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00000.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00000.png new file mode 100644 index 00000000..8e091e97 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00000.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00001.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00001.png new file mode 100644 index 00000000..0bfd354e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00002.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00002.png new file mode 100644 index 00000000..4ce177d6 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00003.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00003.png new file mode 100644 index 00000000..58e74f9e Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00004.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00004.png new file mode 100644 index 00000000..670766fe Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00005.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00005.png new file mode 100644 index 00000000..c3138c77 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00006.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00006.png new file mode 100644 index 00000000..cd2f5275 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00007.png b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00007.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_manifest/USDC.02-Testnet/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part1/00001.png b/tests/snapshots/stax/test_transaction_manifest/part1/00001.png deleted file mode 100644 index e98d6c82..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part1/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part10/00001.png b/tests/snapshots/stax/test_transaction_manifest/part10/00001.png deleted file mode 100644 index 0992b80b..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part10/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part13/00001.png b/tests/snapshots/stax/test_transaction_manifest/part13/00001.png deleted file mode 100644 index f008227a..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part13/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part17/00001.png b/tests/snapshots/stax/test_transaction_manifest/part17/00001.png deleted file mode 100644 index 88421ffc..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part17/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part18/00001.png b/tests/snapshots/stax/test_transaction_manifest/part18/00001.png deleted file mode 100644 index cdf4e8dd..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part18/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part2/00001.png b/tests/snapshots/stax/test_transaction_manifest/part2/00001.png deleted file mode 100644 index a9cb032f..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part2/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00002.png b/tests/snapshots/stax/test_transaction_manifest/part22/00002.png deleted file mode 100644 index b0cd4eeb..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part22/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part22/00005.png b/tests/snapshots/stax/test_transaction_manifest/part22/00005.png deleted file mode 100644 index 2d499085..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part22/00005.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part23/00002.png b/tests/snapshots/stax/test_transaction_manifest/part23/00002.png deleted file mode 100644 index b0cd4eeb..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part23/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00002.png b/tests/snapshots/stax/test_transaction_manifest/part24/00002.png deleted file mode 100644 index 9ea5f7b8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part24/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part24/00006.png b/tests/snapshots/stax/test_transaction_manifest/part24/00006.png deleted file mode 100644 index db49c21d..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part24/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00002.png b/tests/snapshots/stax/test_transaction_manifest/part25/00002.png deleted file mode 100644 index 39548810..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part25/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00006.png b/tests/snapshots/stax/test_transaction_manifest/part25/00006.png deleted file mode 100644 index 009e9178..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part25/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00007.png b/tests/snapshots/stax/test_transaction_manifest/part25/00007.png deleted file mode 100644 index 81550312..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part25/00007.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part25/00008.png b/tests/snapshots/stax/test_transaction_manifest/part25/00008.png deleted file mode 100644 index a1276d2c..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part25/00008.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part27/00003.png b/tests/snapshots/stax/test_transaction_manifest/part27/00003.png deleted file mode 100644 index bfc8cde5..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part27/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00003.png b/tests/snapshots/stax/test_transaction_manifest/part28/00003.png deleted file mode 100644 index f7ece483..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part28/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00004.png b/tests/snapshots/stax/test_transaction_manifest/part28/00004.png deleted file mode 100644 index c0d770f3..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part28/00004.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part28/00005.png b/tests/snapshots/stax/test_transaction_manifest/part28/00005.png deleted file mode 100644 index 5665f8b8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part28/00005.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00001.png b/tests/snapshots/stax/test_transaction_manifest/part3/00001.png deleted file mode 100644 index 6bfeaa7a..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part3/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00002.png b/tests/snapshots/stax/test_transaction_manifest/part3/00002.png deleted file mode 100644 index db36b9a6..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part3/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part3/00003.png b/tests/snapshots/stax/test_transaction_manifest/part3/00003.png deleted file mode 100644 index 16e16cee..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part3/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part33/00001.png b/tests/snapshots/stax/test_transaction_manifest/part33/00001.png deleted file mode 100644 index fa6d1618..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part33/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part34/00001.png b/tests/snapshots/stax/test_transaction_manifest/part34/00001.png deleted file mode 100644 index fa6d1618..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part34/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part38/00001.png b/tests/snapshots/stax/test_transaction_manifest/part38/00001.png deleted file mode 100644 index 8cf1927c..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part38/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part39/00001.png b/tests/snapshots/stax/test_transaction_manifest/part39/00001.png deleted file mode 100644 index 8cf1927c..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part39/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part4/00001.png b/tests/snapshots/stax/test_transaction_manifest/part4/00001.png deleted file mode 100644 index bbcbe8ac..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part4/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part5/00001.png b/tests/snapshots/stax/test_transaction_manifest/part5/00001.png deleted file mode 100644 index 466c355d..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part5/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part50/00001.png b/tests/snapshots/stax/test_transaction_manifest/part50/00001.png deleted file mode 100644 index 14c65834..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part50/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part51/00001.png b/tests/snapshots/stax/test_transaction_manifest/part51/00001.png deleted file mode 100644 index 0a2a2d1d..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part51/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00002.png b/tests/snapshots/stax/test_transaction_manifest/part54/00002.png deleted file mode 100644 index b0cd4eeb..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part54/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00005.png b/tests/snapshots/stax/test_transaction_manifest/part54/00005.png deleted file mode 100644 index 2d499085..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part54/00005.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00006.png b/tests/snapshots/stax/test_transaction_manifest/part54/00006.png deleted file mode 100644 index 34aec140..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part54/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part54/00007.png b/tests/snapshots/stax/test_transaction_manifest/part54/00007.png deleted file mode 100644 index 74fbb2e8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part54/00007.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00001.png b/tests/snapshots/stax/test_transaction_manifest/part55/00001.png deleted file mode 100644 index 54318b25..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part55/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00002.png b/tests/snapshots/stax/test_transaction_manifest/part55/00002.png deleted file mode 100644 index b0cd4eeb..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part55/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00006.png b/tests/snapshots/stax/test_transaction_manifest/part55/00006.png deleted file mode 100644 index 34aec140..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part55/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part55/00007.png b/tests/snapshots/stax/test_transaction_manifest/part55/00007.png deleted file mode 100644 index 74fbb2e8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part55/00007.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00001.png b/tests/snapshots/stax/test_transaction_manifest/part56/00001.png deleted file mode 100644 index 6a8c5ea3..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part56/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00002.png b/tests/snapshots/stax/test_transaction_manifest/part56/00002.png deleted file mode 100644 index 9ea5f7b8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part56/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00006.png b/tests/snapshots/stax/test_transaction_manifest/part56/00006.png deleted file mode 100644 index db49c21d..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part56/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00007.png b/tests/snapshots/stax/test_transaction_manifest/part56/00007.png deleted file mode 100644 index a878a494..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part56/00007.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part56/00008.png b/tests/snapshots/stax/test_transaction_manifest/part56/00008.png deleted file mode 100644 index 15dfc910..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part56/00008.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00002.png b/tests/snapshots/stax/test_transaction_manifest/part57/00002.png deleted file mode 100644 index 39548810..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part57/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00006.png b/tests/snapshots/stax/test_transaction_manifest/part57/00006.png deleted file mode 100644 index 009e9178..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part57/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00007.png b/tests/snapshots/stax/test_transaction_manifest/part57/00007.png deleted file mode 100644 index 81550312..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part57/00007.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part57/00008.png b/tests/snapshots/stax/test_transaction_manifest/part57/00008.png deleted file mode 100644 index a1276d2c..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part57/00008.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00001.png b/tests/snapshots/stax/test_transaction_manifest/part58/00001.png deleted file mode 100644 index cfc56a1d..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part58/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00003.png b/tests/snapshots/stax/test_transaction_manifest/part58/00003.png deleted file mode 100644 index 8e37137d..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part58/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part58/00004.png b/tests/snapshots/stax/test_transaction_manifest/part58/00004.png deleted file mode 100644 index 2c4cb156..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part58/00004.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00001.png b/tests/snapshots/stax/test_transaction_manifest/part59/00001.png deleted file mode 100644 index 25046151..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part59/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part59/00003.png b/tests/snapshots/stax/test_transaction_manifest/part59/00003.png deleted file mode 100644 index bfc8cde5..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part59/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part6/00001.png b/tests/snapshots/stax/test_transaction_manifest/part6/00001.png deleted file mode 100644 index 9620afc5..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part6/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00001.png b/tests/snapshots/stax/test_transaction_manifest/part60/00001.png deleted file mode 100644 index cd9e076f..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part60/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00003.png b/tests/snapshots/stax/test_transaction_manifest/part60/00003.png deleted file mode 100644 index f7ece483..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part60/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00004.png b/tests/snapshots/stax/test_transaction_manifest/part60/00004.png deleted file mode 100644 index c0d770f3..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part60/00004.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00005.png b/tests/snapshots/stax/test_transaction_manifest/part60/00005.png deleted file mode 100644 index 5665f8b8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part60/00005.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00006.png b/tests/snapshots/stax/test_transaction_manifest/part60/00006.png deleted file mode 100644 index 34aec140..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part60/00006.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part60/00007.png b/tests/snapshots/stax/test_transaction_manifest/part60/00007.png deleted file mode 100644 index 74fbb2e8..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part60/00007.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part7/00001.png b/tests/snapshots/stax/test_transaction_manifest/part7/00001.png deleted file mode 100644 index a755ed6b..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part7/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_manifest/part9/00001.png b/tests/snapshots/stax/test_transaction_manifest/part9/00001.png deleted file mode 100644 index 81cf4097..00000000 Binary files a/tests/snapshots/stax/test_transaction_manifest/part9/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00001.png b/tests/snapshots/stax/test_transaction_params/part1/00001.png index 23b44e3e..0e302d91 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00001.png and b/tests/snapshots/stax/test_transaction_params/part1/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00002.png b/tests/snapshots/stax/test_transaction_params/part1/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00002.png and b/tests/snapshots/stax/test_transaction_params/part1/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00003.png b/tests/snapshots/stax/test_transaction_params/part1/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00003.png and b/tests/snapshots/stax/test_transaction_params/part1/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00004.png b/tests/snapshots/stax/test_transaction_params/part1/00004.png index 670766fe..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00004.png and b/tests/snapshots/stax/test_transaction_params/part1/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00005.png b/tests/snapshots/stax/test_transaction_params/part1/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00005.png and b/tests/snapshots/stax/test_transaction_params/part1/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00006.png b/tests/snapshots/stax/test_transaction_params/part1/00006.png index cd2f5275..5ff4c5f3 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00006.png and b/tests/snapshots/stax/test_transaction_params/part1/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00007.png b/tests/snapshots/stax/test_transaction_params/part1/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part1/00007.png and b/tests/snapshots/stax/test_transaction_params/part1/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00008.png b/tests/snapshots/stax/test_transaction_params/part1/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part1/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part1/00009.png b/tests/snapshots/stax/test_transaction_params/part1/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part1/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00001.png b/tests/snapshots/stax/test_transaction_params/part10/00001.png index 74045c38..9128c56e 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00001.png and b/tests/snapshots/stax/test_transaction_params/part10/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00002.png b/tests/snapshots/stax/test_transaction_params/part10/00002.png index ba713cb3..13dbf109 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00002.png and b/tests/snapshots/stax/test_transaction_params/part10/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00003.png b/tests/snapshots/stax/test_transaction_params/part10/00003.png index e4fe1788..234968d1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00003.png and b/tests/snapshots/stax/test_transaction_params/part10/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00004.png b/tests/snapshots/stax/test_transaction_params/part10/00004.png index a615d1ae..670766fe 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00004.png and b/tests/snapshots/stax/test_transaction_params/part10/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00005.png b/tests/snapshots/stax/test_transaction_params/part10/00005.png index 0646bd44..c3138c77 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00005.png and b/tests/snapshots/stax/test_transaction_params/part10/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00006.png b/tests/snapshots/stax/test_transaction_params/part10/00006.png index d8282095..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00006.png and b/tests/snapshots/stax/test_transaction_params/part10/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part10/00007.png b/tests/snapshots/stax/test_transaction_params/part10/00007.png index cd2f5275..1dac7479 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part10/00007.png and b/tests/snapshots/stax/test_transaction_params/part10/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00001.png b/tests/snapshots/stax/test_transaction_params/part11/00001.png index 74045c38..9128c56e 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00001.png and b/tests/snapshots/stax/test_transaction_params/part11/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00002.png b/tests/snapshots/stax/test_transaction_params/part11/00002.png index ba713cb3..13dbf109 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00002.png and b/tests/snapshots/stax/test_transaction_params/part11/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00003.png b/tests/snapshots/stax/test_transaction_params/part11/00003.png index e4fe1788..234968d1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00003.png and b/tests/snapshots/stax/test_transaction_params/part11/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00004.png b/tests/snapshots/stax/test_transaction_params/part11/00004.png index a615d1ae..670766fe 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00004.png and b/tests/snapshots/stax/test_transaction_params/part11/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00005.png b/tests/snapshots/stax/test_transaction_params/part11/00005.png index 0646bd44..c3138c77 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00005.png and b/tests/snapshots/stax/test_transaction_params/part11/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00006.png b/tests/snapshots/stax/test_transaction_params/part11/00006.png index d8282095..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00006.png and b/tests/snapshots/stax/test_transaction_params/part11/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part11/00007.png b/tests/snapshots/stax/test_transaction_params/part11/00007.png index cd2f5275..1dac7479 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part11/00007.png and b/tests/snapshots/stax/test_transaction_params/part11/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00001.png b/tests/snapshots/stax/test_transaction_params/part12/00001.png index 74045c38..9128c56e 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00001.png and b/tests/snapshots/stax/test_transaction_params/part12/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00002.png b/tests/snapshots/stax/test_transaction_params/part12/00002.png index ba713cb3..13dbf109 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00002.png and b/tests/snapshots/stax/test_transaction_params/part12/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00003.png b/tests/snapshots/stax/test_transaction_params/part12/00003.png index e4fe1788..234968d1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00003.png and b/tests/snapshots/stax/test_transaction_params/part12/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00004.png b/tests/snapshots/stax/test_transaction_params/part12/00004.png index a615d1ae..670766fe 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00004.png and b/tests/snapshots/stax/test_transaction_params/part12/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00005.png b/tests/snapshots/stax/test_transaction_params/part12/00005.png index 0646bd44..c3138c77 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00005.png and b/tests/snapshots/stax/test_transaction_params/part12/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00006.png b/tests/snapshots/stax/test_transaction_params/part12/00006.png index d8282095..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00006.png and b/tests/snapshots/stax/test_transaction_params/part12/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part12/00007.png b/tests/snapshots/stax/test_transaction_params/part12/00007.png index cd2f5275..1dac7479 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part12/00007.png and b/tests/snapshots/stax/test_transaction_params/part12/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00001.png b/tests/snapshots/stax/test_transaction_params/part2/00001.png index 23b44e3e..0e302d91 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00001.png and b/tests/snapshots/stax/test_transaction_params/part2/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00002.png b/tests/snapshots/stax/test_transaction_params/part2/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00002.png and b/tests/snapshots/stax/test_transaction_params/part2/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00003.png b/tests/snapshots/stax/test_transaction_params/part2/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00003.png and b/tests/snapshots/stax/test_transaction_params/part2/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00004.png b/tests/snapshots/stax/test_transaction_params/part2/00004.png index 670766fe..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00004.png and b/tests/snapshots/stax/test_transaction_params/part2/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00005.png b/tests/snapshots/stax/test_transaction_params/part2/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00005.png and b/tests/snapshots/stax/test_transaction_params/part2/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00006.png b/tests/snapshots/stax/test_transaction_params/part2/00006.png index cd2f5275..5ff4c5f3 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00006.png and b/tests/snapshots/stax/test_transaction_params/part2/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00007.png b/tests/snapshots/stax/test_transaction_params/part2/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part2/00007.png and b/tests/snapshots/stax/test_transaction_params/part2/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00008.png b/tests/snapshots/stax/test_transaction_params/part2/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part2/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part2/00009.png b/tests/snapshots/stax/test_transaction_params/part2/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part2/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00001.png b/tests/snapshots/stax/test_transaction_params/part3/00001.png index 23b44e3e..0e302d91 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00001.png and b/tests/snapshots/stax/test_transaction_params/part3/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00002.png b/tests/snapshots/stax/test_transaction_params/part3/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00002.png and b/tests/snapshots/stax/test_transaction_params/part3/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00003.png b/tests/snapshots/stax/test_transaction_params/part3/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00003.png and b/tests/snapshots/stax/test_transaction_params/part3/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00004.png b/tests/snapshots/stax/test_transaction_params/part3/00004.png index 670766fe..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00004.png and b/tests/snapshots/stax/test_transaction_params/part3/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00005.png b/tests/snapshots/stax/test_transaction_params/part3/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00005.png and b/tests/snapshots/stax/test_transaction_params/part3/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00006.png b/tests/snapshots/stax/test_transaction_params/part3/00006.png index cd2f5275..5ff4c5f3 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00006.png and b/tests/snapshots/stax/test_transaction_params/part3/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00007.png b/tests/snapshots/stax/test_transaction_params/part3/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part3/00007.png and b/tests/snapshots/stax/test_transaction_params/part3/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00008.png b/tests/snapshots/stax/test_transaction_params/part3/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part3/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part3/00009.png b/tests/snapshots/stax/test_transaction_params/part3/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part3/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00001.png b/tests/snapshots/stax/test_transaction_params/part4/00001.png index 23b44e3e..0e302d91 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00001.png and b/tests/snapshots/stax/test_transaction_params/part4/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00002.png b/tests/snapshots/stax/test_transaction_params/part4/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00002.png and b/tests/snapshots/stax/test_transaction_params/part4/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00003.png b/tests/snapshots/stax/test_transaction_params/part4/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00003.png and b/tests/snapshots/stax/test_transaction_params/part4/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00004.png b/tests/snapshots/stax/test_transaction_params/part4/00004.png index 670766fe..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00004.png and b/tests/snapshots/stax/test_transaction_params/part4/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00005.png b/tests/snapshots/stax/test_transaction_params/part4/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00005.png and b/tests/snapshots/stax/test_transaction_params/part4/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00006.png b/tests/snapshots/stax/test_transaction_params/part4/00006.png index cd2f5275..5ff4c5f3 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00006.png and b/tests/snapshots/stax/test_transaction_params/part4/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00007.png b/tests/snapshots/stax/test_transaction_params/part4/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part4/00007.png and b/tests/snapshots/stax/test_transaction_params/part4/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00008.png b/tests/snapshots/stax/test_transaction_params/part4/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part4/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part4/00009.png b/tests/snapshots/stax/test_transaction_params/part4/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_params/part4/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part5/00001.png b/tests/snapshots/stax/test_transaction_params/part5/00001.png index 10502ed8..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part5/00001.png and b/tests/snapshots/stax/test_transaction_params/part5/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part5/00002.png b/tests/snapshots/stax/test_transaction_params/part5/00002.png index 2c775e2b..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part5/00002.png and b/tests/snapshots/stax/test_transaction_params/part5/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part5/00003.png b/tests/snapshots/stax/test_transaction_params/part5/00003.png index 944a06e0..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part5/00003.png and b/tests/snapshots/stax/test_transaction_params/part5/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part5/00004.png b/tests/snapshots/stax/test_transaction_params/part5/00004.png index e32fd6f6..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part5/00004.png and b/tests/snapshots/stax/test_transaction_params/part5/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part5/00005.png b/tests/snapshots/stax/test_transaction_params/part5/00005.png index 317a8702..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part5/00005.png and b/tests/snapshots/stax/test_transaction_params/part5/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part5/00008.png b/tests/snapshots/stax/test_transaction_params/part5/00008.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part5/00008.png and b/tests/snapshots/stax/test_transaction_params/part5/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part6/00001.png b/tests/snapshots/stax/test_transaction_params/part6/00001.png index 10502ed8..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part6/00001.png and b/tests/snapshots/stax/test_transaction_params/part6/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part6/00002.png b/tests/snapshots/stax/test_transaction_params/part6/00002.png index 2c775e2b..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part6/00002.png and b/tests/snapshots/stax/test_transaction_params/part6/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part6/00003.png b/tests/snapshots/stax/test_transaction_params/part6/00003.png index 944a06e0..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part6/00003.png and b/tests/snapshots/stax/test_transaction_params/part6/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part6/00004.png b/tests/snapshots/stax/test_transaction_params/part6/00004.png index e32fd6f6..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part6/00004.png and b/tests/snapshots/stax/test_transaction_params/part6/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part6/00005.png b/tests/snapshots/stax/test_transaction_params/part6/00005.png index 317a8702..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part6/00005.png and b/tests/snapshots/stax/test_transaction_params/part6/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part6/00008.png b/tests/snapshots/stax/test_transaction_params/part6/00008.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part6/00008.png and b/tests/snapshots/stax/test_transaction_params/part6/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part7/00001.png b/tests/snapshots/stax/test_transaction_params/part7/00001.png index 10502ed8..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part7/00001.png and b/tests/snapshots/stax/test_transaction_params/part7/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part7/00002.png b/tests/snapshots/stax/test_transaction_params/part7/00002.png index 2c775e2b..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part7/00002.png and b/tests/snapshots/stax/test_transaction_params/part7/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part7/00003.png b/tests/snapshots/stax/test_transaction_params/part7/00003.png index 944a06e0..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part7/00003.png and b/tests/snapshots/stax/test_transaction_params/part7/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part7/00004.png b/tests/snapshots/stax/test_transaction_params/part7/00004.png index e32fd6f6..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part7/00004.png and b/tests/snapshots/stax/test_transaction_params/part7/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part7/00005.png b/tests/snapshots/stax/test_transaction_params/part7/00005.png index 317a8702..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part7/00005.png and b/tests/snapshots/stax/test_transaction_params/part7/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part7/00008.png b/tests/snapshots/stax/test_transaction_params/part7/00008.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part7/00008.png and b/tests/snapshots/stax/test_transaction_params/part7/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part8/00001.png b/tests/snapshots/stax/test_transaction_params/part8/00001.png index 10502ed8..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part8/00001.png and b/tests/snapshots/stax/test_transaction_params/part8/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part8/00002.png b/tests/snapshots/stax/test_transaction_params/part8/00002.png index 2c775e2b..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part8/00002.png and b/tests/snapshots/stax/test_transaction_params/part8/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part8/00003.png b/tests/snapshots/stax/test_transaction_params/part8/00003.png index 944a06e0..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part8/00003.png and b/tests/snapshots/stax/test_transaction_params/part8/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part8/00004.png b/tests/snapshots/stax/test_transaction_params/part8/00004.png index e32fd6f6..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part8/00004.png and b/tests/snapshots/stax/test_transaction_params/part8/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part8/00005.png b/tests/snapshots/stax/test_transaction_params/part8/00005.png index 317a8702..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part8/00005.png and b/tests/snapshots/stax/test_transaction_params/part8/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part8/00008.png b/tests/snapshots/stax/test_transaction_params/part8/00008.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part8/00008.png and b/tests/snapshots/stax/test_transaction_params/part8/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00001.png b/tests/snapshots/stax/test_transaction_params/part9/00001.png index 74045c38..9128c56e 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00001.png and b/tests/snapshots/stax/test_transaction_params/part9/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00002.png b/tests/snapshots/stax/test_transaction_params/part9/00002.png index ba713cb3..13dbf109 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00002.png and b/tests/snapshots/stax/test_transaction_params/part9/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00003.png b/tests/snapshots/stax/test_transaction_params/part9/00003.png index e4fe1788..234968d1 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00003.png and b/tests/snapshots/stax/test_transaction_params/part9/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00004.png b/tests/snapshots/stax/test_transaction_params/part9/00004.png index a615d1ae..670766fe 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00004.png and b/tests/snapshots/stax/test_transaction_params/part9/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00005.png b/tests/snapshots/stax/test_transaction_params/part9/00005.png index 0646bd44..c3138c77 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00005.png and b/tests/snapshots/stax/test_transaction_params/part9/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00006.png b/tests/snapshots/stax/test_transaction_params/part9/00006.png index d8282095..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00006.png and b/tests/snapshots/stax/test_transaction_params/part9/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_params/part9/00007.png b/tests/snapshots/stax/test_transaction_params/part9/00007.png index cd2f5275..1dac7479 100644 Binary files a/tests/snapshots/stax/test_transaction_params/part9/00007.png and b/tests/snapshots/stax/test_transaction_params/part9/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/00003.png b/tests/snapshots/stax/test_transaction_slot/00003.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/00003.png and b/tests/snapshots/stax/test_transaction_slot/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00001.png b/tests/snapshots/stax/test_transaction_slot/part0/00001.png index 23b44e3e..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00001.png and b/tests/snapshots/stax/test_transaction_slot/part0/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00002.png b/tests/snapshots/stax/test_transaction_slot/part0/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00002.png and b/tests/snapshots/stax/test_transaction_slot/part0/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00003.png b/tests/snapshots/stax/test_transaction_slot/part0/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00003.png and b/tests/snapshots/stax/test_transaction_slot/part0/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00004.png b/tests/snapshots/stax/test_transaction_slot/part0/00004.png index 670766fe..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00004.png and b/tests/snapshots/stax/test_transaction_slot/part0/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00005.png b/tests/snapshots/stax/test_transaction_slot/part0/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00005.png and b/tests/snapshots/stax/test_transaction_slot/part0/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00006.png b/tests/snapshots/stax/test_transaction_slot/part0/00006.png index cd2f5275..5ff4c5f3 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00006.png and b/tests/snapshots/stax/test_transaction_slot/part0/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00007.png b/tests/snapshots/stax/test_transaction_slot/part0/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part0/00007.png and b/tests/snapshots/stax/test_transaction_slot/part0/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00008.png b/tests/snapshots/stax/test_transaction_slot/part0/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part0/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part0/00009.png b/tests/snapshots/stax/test_transaction_slot/part0/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part0/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part1/00003.png b/tests/snapshots/stax/test_transaction_slot/part1/00003.png index cd2f5275..a21279c8 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part1/00003.png and b/tests/snapshots/stax/test_transaction_slot/part1/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00001.png b/tests/snapshots/stax/test_transaction_slot/part10/00001.png index b12a589c..782053a9 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part10/00001.png and b/tests/snapshots/stax/test_transaction_slot/part10/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00002.png b/tests/snapshots/stax/test_transaction_slot/part10/00002.png index 3da0a583..11fb8050 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part10/00002.png and b/tests/snapshots/stax/test_transaction_slot/part10/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00003.png b/tests/snapshots/stax/test_transaction_slot/part10/00003.png index 528fb8ce..38d3f4a0 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part10/00003.png and b/tests/snapshots/stax/test_transaction_slot/part10/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00004.png b/tests/snapshots/stax/test_transaction_slot/part10/00004.png index ef6cce46..33d6f225 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part10/00004.png and b/tests/snapshots/stax/test_transaction_slot/part10/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00005.png b/tests/snapshots/stax/test_transaction_slot/part10/00005.png index cd2f5275..30f4d542 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part10/00005.png and b/tests/snapshots/stax/test_transaction_slot/part10/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00006.png b/tests/snapshots/stax/test_transaction_slot/part10/00006.png index 1dac7479..d8282095 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part10/00006.png and b/tests/snapshots/stax/test_transaction_slot/part10/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00007.png b/tests/snapshots/stax/test_transaction_slot/part10/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part10/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part10/00008.png b/tests/snapshots/stax/test_transaction_slot/part10/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part10/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00001.png b/tests/snapshots/stax/test_transaction_slot/part12/00001.png index af66a9c6..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00001.png and b/tests/snapshots/stax/test_transaction_slot/part12/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00002.png b/tests/snapshots/stax/test_transaction_slot/part12/00002.png index b3abe178..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00002.png and b/tests/snapshots/stax/test_transaction_slot/part12/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00003.png b/tests/snapshots/stax/test_transaction_slot/part12/00003.png index f1f28241..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00003.png and b/tests/snapshots/stax/test_transaction_slot/part12/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00004.png b/tests/snapshots/stax/test_transaction_slot/part12/00004.png index 99c8cadb..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00004.png and b/tests/snapshots/stax/test_transaction_slot/part12/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00005.png b/tests/snapshots/stax/test_transaction_slot/part12/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00005.png and b/tests/snapshots/stax/test_transaction_slot/part12/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00006.png b/tests/snapshots/stax/test_transaction_slot/part12/00006.png index cd2f5275..6fb72a2b 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00006.png and b/tests/snapshots/stax/test_transaction_slot/part12/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00007.png b/tests/snapshots/stax/test_transaction_slot/part12/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part12/00007.png and b/tests/snapshots/stax/test_transaction_slot/part12/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00008.png b/tests/snapshots/stax/test_transaction_slot/part12/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part12/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part12/00009.png b/tests/snapshots/stax/test_transaction_slot/part12/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part12/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00001.png b/tests/snapshots/stax/test_transaction_slot/part14/00001.png index af66a9c6..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00001.png and b/tests/snapshots/stax/test_transaction_slot/part14/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00002.png b/tests/snapshots/stax/test_transaction_slot/part14/00002.png index b3abe178..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00002.png and b/tests/snapshots/stax/test_transaction_slot/part14/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00003.png b/tests/snapshots/stax/test_transaction_slot/part14/00003.png index f1f28241..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00003.png and b/tests/snapshots/stax/test_transaction_slot/part14/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00004.png b/tests/snapshots/stax/test_transaction_slot/part14/00004.png index 6954c72d..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00004.png and b/tests/snapshots/stax/test_transaction_slot/part14/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00005.png b/tests/snapshots/stax/test_transaction_slot/part14/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00005.png and b/tests/snapshots/stax/test_transaction_slot/part14/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00006.png b/tests/snapshots/stax/test_transaction_slot/part14/00006.png index cd2f5275..bafe24ff 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00006.png and b/tests/snapshots/stax/test_transaction_slot/part14/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00007.png b/tests/snapshots/stax/test_transaction_slot/part14/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part14/00007.png and b/tests/snapshots/stax/test_transaction_slot/part14/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00008.png b/tests/snapshots/stax/test_transaction_slot/part14/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part14/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part14/00009.png b/tests/snapshots/stax/test_transaction_slot/part14/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part14/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00001.png b/tests/snapshots/stax/test_transaction_slot/part15/00001.png index 23b44e3e..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00001.png and b/tests/snapshots/stax/test_transaction_slot/part15/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00002.png b/tests/snapshots/stax/test_transaction_slot/part15/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00002.png and b/tests/snapshots/stax/test_transaction_slot/part15/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00003.png b/tests/snapshots/stax/test_transaction_slot/part15/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00003.png and b/tests/snapshots/stax/test_transaction_slot/part15/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00004.png b/tests/snapshots/stax/test_transaction_slot/part15/00004.png index d09682ec..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00004.png and b/tests/snapshots/stax/test_transaction_slot/part15/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00005.png b/tests/snapshots/stax/test_transaction_slot/part15/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00005.png and b/tests/snapshots/stax/test_transaction_slot/part15/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00006.png b/tests/snapshots/stax/test_transaction_slot/part15/00006.png index cd2f5275..f2665378 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00006.png and b/tests/snapshots/stax/test_transaction_slot/part15/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00007.png b/tests/snapshots/stax/test_transaction_slot/part15/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part15/00007.png and b/tests/snapshots/stax/test_transaction_slot/part15/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00008.png b/tests/snapshots/stax/test_transaction_slot/part15/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part15/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part15/00009.png b/tests/snapshots/stax/test_transaction_slot/part15/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part15/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00001.png b/tests/snapshots/stax/test_transaction_slot/part2/00001.png index 23b44e3e..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00001.png and b/tests/snapshots/stax/test_transaction_slot/part2/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00002.png b/tests/snapshots/stax/test_transaction_slot/part2/00002.png index a2e7a49c..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00002.png and b/tests/snapshots/stax/test_transaction_slot/part2/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00003.png b/tests/snapshots/stax/test_transaction_slot/part2/00003.png index fb625e5a..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00003.png and b/tests/snapshots/stax/test_transaction_slot/part2/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00004.png b/tests/snapshots/stax/test_transaction_slot/part2/00004.png index a723ad17..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00004.png and b/tests/snapshots/stax/test_transaction_slot/part2/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00005.png b/tests/snapshots/stax/test_transaction_slot/part2/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00005.png and b/tests/snapshots/stax/test_transaction_slot/part2/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00006.png b/tests/snapshots/stax/test_transaction_slot/part2/00006.png index cd2f5275..e875009e 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00006.png and b/tests/snapshots/stax/test_transaction_slot/part2/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00007.png b/tests/snapshots/stax/test_transaction_slot/part2/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part2/00007.png and b/tests/snapshots/stax/test_transaction_slot/part2/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00008.png b/tests/snapshots/stax/test_transaction_slot/part2/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part2/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part2/00009.png b/tests/snapshots/stax/test_transaction_slot/part2/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part2/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00001.png b/tests/snapshots/stax/test_transaction_slot/part3/00001.png index b9933fd3..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part3/00001.png and b/tests/snapshots/stax/test_transaction_slot/part3/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00002.png b/tests/snapshots/stax/test_transaction_slot/part3/00002.png index dffed1e1..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part3/00002.png and b/tests/snapshots/stax/test_transaction_slot/part3/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00003.png b/tests/snapshots/stax/test_transaction_slot/part3/00003.png index cbfc6f79..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part3/00003.png and b/tests/snapshots/stax/test_transaction_slot/part3/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00004.png b/tests/snapshots/stax/test_transaction_slot/part3/00004.png index ef6cce46..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part3/00004.png and b/tests/snapshots/stax/test_transaction_slot/part3/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00005.png b/tests/snapshots/stax/test_transaction_slot/part3/00005.png index cd2f5275..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part3/00005.png and b/tests/snapshots/stax/test_transaction_slot/part3/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00006.png b/tests/snapshots/stax/test_transaction_slot/part3/00006.png index 1dac7479..828aeeab 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part3/00006.png and b/tests/snapshots/stax/test_transaction_slot/part3/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00007.png b/tests/snapshots/stax/test_transaction_slot/part3/00007.png new file mode 100644 index 00000000..59aa6484 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part3/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00008.png b/tests/snapshots/stax/test_transaction_slot/part3/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part3/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part3/00009.png b/tests/snapshots/stax/test_transaction_slot/part3/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part3/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00001.png b/tests/snapshots/stax/test_transaction_slot/part4/00001.png index af66a9c6..4b846bac 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00001.png and b/tests/snapshots/stax/test_transaction_slot/part4/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00002.png b/tests/snapshots/stax/test_transaction_slot/part4/00002.png index b3abe178..3acbc25f 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00002.png and b/tests/snapshots/stax/test_transaction_slot/part4/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00003.png b/tests/snapshots/stax/test_transaction_slot/part4/00003.png index f1f28241..c723c1aa 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00003.png and b/tests/snapshots/stax/test_transaction_slot/part4/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00004.png b/tests/snapshots/stax/test_transaction_slot/part4/00004.png index e70ab30a..5c8ec2c1 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00004.png and b/tests/snapshots/stax/test_transaction_slot/part4/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00005.png b/tests/snapshots/stax/test_transaction_slot/part4/00005.png index c3138c77..30d3b010 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00005.png and b/tests/snapshots/stax/test_transaction_slot/part4/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00006.png b/tests/snapshots/stax/test_transaction_slot/part4/00006.png index cd2f5275..828aeeab 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00006.png and b/tests/snapshots/stax/test_transaction_slot/part4/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00007.png b/tests/snapshots/stax/test_transaction_slot/part4/00007.png index 1dac7479..59aa6484 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part4/00007.png and b/tests/snapshots/stax/test_transaction_slot/part4/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00008.png b/tests/snapshots/stax/test_transaction_slot/part4/00008.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part4/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part4/00009.png b/tests/snapshots/stax/test_transaction_slot/part4/00009.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part4/00009.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00001.png b/tests/snapshots/stax/test_transaction_slot/part6/00001.png index b9933fd3..8a445a2c 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part6/00001.png and b/tests/snapshots/stax/test_transaction_slot/part6/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00002.png b/tests/snapshots/stax/test_transaction_slot/part6/00002.png index 3da0a583..11fb8050 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part6/00002.png and b/tests/snapshots/stax/test_transaction_slot/part6/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00003.png b/tests/snapshots/stax/test_transaction_slot/part6/00003.png index 134da5a7..38d3f4a0 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part6/00003.png and b/tests/snapshots/stax/test_transaction_slot/part6/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00004.png b/tests/snapshots/stax/test_transaction_slot/part6/00004.png index ef6cce46..33d6f225 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part6/00004.png and b/tests/snapshots/stax/test_transaction_slot/part6/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00005.png b/tests/snapshots/stax/test_transaction_slot/part6/00005.png index cd2f5275..5567d721 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part6/00005.png and b/tests/snapshots/stax/test_transaction_slot/part6/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00006.png b/tests/snapshots/stax/test_transaction_slot/part6/00006.png index 1dac7479..d8282095 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part6/00006.png and b/tests/snapshots/stax/test_transaction_slot/part6/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00007.png b/tests/snapshots/stax/test_transaction_slot/part6/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part6/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part6/00008.png b/tests/snapshots/stax/test_transaction_slot/part6/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part6/00008.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00001.png b/tests/snapshots/stax/test_transaction_slot/part8/00001.png index b12a589c..782053a9 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part8/00001.png and b/tests/snapshots/stax/test_transaction_slot/part8/00001.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00002.png b/tests/snapshots/stax/test_transaction_slot/part8/00002.png index dffed1e1..11fb8050 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part8/00002.png and b/tests/snapshots/stax/test_transaction_slot/part8/00002.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00003.png b/tests/snapshots/stax/test_transaction_slot/part8/00003.png index 0e943ecf..38d3f4a0 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part8/00003.png and b/tests/snapshots/stax/test_transaction_slot/part8/00003.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00004.png b/tests/snapshots/stax/test_transaction_slot/part8/00004.png index ef6cce46..30aeb712 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part8/00004.png and b/tests/snapshots/stax/test_transaction_slot/part8/00004.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00005.png b/tests/snapshots/stax/test_transaction_slot/part8/00005.png index cd2f5275..a2187726 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part8/00005.png and b/tests/snapshots/stax/test_transaction_slot/part8/00005.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00006.png b/tests/snapshots/stax/test_transaction_slot/part8/00006.png index 1dac7479..d8282095 100644 Binary files a/tests/snapshots/stax/test_transaction_slot/part8/00006.png and b/tests/snapshots/stax/test_transaction_slot/part8/00006.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00007.png b/tests/snapshots/stax/test_transaction_slot/part8/00007.png new file mode 100644 index 00000000..a21279c8 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part8/00007.png differ diff --git a/tests/snapshots/stax/test_transaction_slot/part8/00008.png b/tests/snapshots/stax/test_transaction_slot/part8/00008.png new file mode 100644 index 00000000..1dac7479 Binary files /dev/null and b/tests/snapshots/stax/test_transaction_slot/part8/00008.png differ diff --git a/tests/test_app_mainmenu.py b/tests/test_app_mainmenu.py index 223362eb..d99b4406 100644 --- a/tests/test_app_mainmenu.py +++ b/tests/test_app_mainmenu.py @@ -1,25 +1,95 @@ -from ragger.navigator import NavInsID +from application_client.flow_command_sender import FlowCommandSender, HashType -from utils import ROOT_SCREENSHOT_PATH +from ragger.navigator import NavIns, NavInsID +from ragger.bip import CurveChoice +from utils import ROOT_SCREENSHOT_PATH, util_set_slot -def test_app_mainmenu(firmware, navigator, test_name): + +def test_app_mainmenu(firmware, backend, navigator, test_name): """ Check the behavior of the device main menu """ - # Navigate in the main menu and check screens + client = FlowCommandSender(backend) + + # Navigate in the main menu, click "View address" + if firmware.device == "nanos": + instructions = [ + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.LEFT_CLICK, + NavInsID.LEFT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + ] + elif firmware.device.startswith("nano"): + instructions = [ + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.LEFT_CLICK, + NavInsID.LEFT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + ] + else: + instructions = [ + NavInsID.USE_CASE_HOME_SETTINGS, + NavInsID.USE_CASE_SETTINGS_NEXT, + NavInsID.USE_CASE_SETTINGS_NEXT, + NavInsID.USE_CASE_CHOICE_CONFIRM, + NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM, + NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT + ] + + part = 0 + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, f"{test_name}/part{part}", instructions, + screen_change_before_first_instruction=False) + + # Send the APDU - Set slot + hash_t = HashType.HASH_SHA2 + address = "e467b9dd11fa00df" + path = "m/44'/539'/513'/0/0" + curve = CurveChoice.Secp256k1 + part += 1 + util_set_slot(client, firmware, navigator, f"{test_name}/part{part}", 0, curve, hash_t, address, path) + + # Navigate in the main menu, click "View address" if firmware.device.startswith("nano"): instructions = [ + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, ] else: instructions = [ NavInsID.USE_CASE_HOME_SETTINGS, NavInsID.USE_CASE_SETTINGS_NEXT, + NavInsID.USE_CASE_SETTINGS_NEXT, + NavInsID.USE_CASE_CHOICE_CONFIRM, + NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM, NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT ] - navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, instructions, + + part += 1 + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, f"{test_name}/part{part}", instructions, screen_change_before_first_instruction=False) diff --git a/tests/test_error_cmd.py b/tests/test_error_cmd.py index 776687bc..3300877e 100644 --- a/tests/test_error_cmd.py +++ b/tests/test_error_cmd.py @@ -1,6 +1,6 @@ import pytest -from application_client.flow_command_sender import ClaType, InsType, P1, P2, Errors +from application_client.flow_command_sender import ClaType, InsType, P1, Errors from ragger.error import ExceptionRAPDU @@ -21,11 +21,11 @@ def test_bad_ins(backend): assert err.value.status == Errors.SW_INS_NOT_SUPPORTED -def test_wrong_p1p2(backend): - """ Ensure the app returns an error when a bad P1 or P2 is used """ +def test_wrong_p1(backend): + """ Ensure the app returns an error when a bad P1 is used """ with pytest.raises(ExceptionRAPDU) as err: - backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_LAST + 1, p2=P2.P2_MORE) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_LAST_MESSAGE + 1) assert err.value.status == Errors.SW_INVALIDP1P2 diff --git a/tests/test_sign_cmd.py b/tests/test_sign_cmd.py index 167f1e32..e16941f6 100644 --- a/tests/test_sign_cmd.py +++ b/tests/test_sign_cmd.py @@ -1,19 +1,21 @@ from pathlib import Path import pytest +import re -from application_client.flow_command_sender import FlowCommandSender, Errors, HashType +from application_client.flow_command_sender import FlowCommandSender, Errors, HashType, ClaType, InsType, P1 from application_client.flow_response_unpacker import unpack_sign_tx_response +from application_client.txMerkleTree import merkleTree, merkleIndex from ragger.bip import CurveChoice from ragger.error import ExceptionRAPDU from ragger.navigator import Navigator from ragger.firmware import Firmware -from utils import ROOT_SCREENSHOT_PATH, util_check_signature, util_check_pub_key, util_set_slot, util_set_expert_mode, util_navigate - +import json -MANIFEST_FILE = f"{ROOT_SCREENSHOT_PATH}/testvectors/manifestEnvelopeCases.json" +from utils import ROOT_SCREENSHOT_PATH, util_check_signature, util_check_pub_key, util_set_slot, util_set_expert_mode, util_navigate +MANIFEST_FILE = f"{ROOT_SCREENSHOT_PATH}/manifestPayloadCases.json" # Note: Transactions are explained here: https://janezpodhostnik.github.io/flow-py-sdk/python_SDK_guide/#transactions @@ -27,6 +29,7 @@ def _check_transaction( path: str, curve: CurveChoice, hash_t: HashType, + signable_type: str, timeout: int = 300, ) -> None: """ Check the transaction in confirmation mode when user accepts """ @@ -38,7 +41,7 @@ def _check_transaction( message = bytes.fromhex(transaction) # Send the APDU (Asynchronous) - with client.sign_tx(path, curve, message, hash_t): + with client.sign_tx(path, curve, message, hash_t, signable_type): util_navigate(firmware, navigator, test_name, "APPROVE_SIGN", timeout) # Send the APDU (Asynchronous) @@ -48,14 +51,122 @@ def _check_transaction( # Parse the response _, der_sig = unpack_sign_tx_response(response.data) # Check the signature - util_check_signature(public_key, der_sig, message, curve, hash_t) + util_check_signature(public_key, der_sig, message, curve, hash_t, signable_type) + +def get_tx_and_hash(titles, network): + # Retrieve FA.01, FA.02, FA.03 from manifest + with open(MANIFEST_FILE) as json_file: + transactions = json.load(json_file) + + transactionsAndScriptHashes = [] + for transaction in transactions: + tx_name = transaction["title"].split()[0] + chain = transaction["chainID"] + if tx_name in titles and chain == network: + transactionsAndScriptHashes.append((transaction["encodedTransactionEnvelopeHex"], transaction["hash"])) + + return transactionsAndScriptHashes + +def test_transaction_metadata_errors(firmware, backend, navigator, test_name): + """ Check metadata proofs. """ + + # Use the app interface instead of raw interface + client = FlowCommandSender(backend) + + def send_tx_body() -> bytes: + dataToSend: List[bytes]= [ + bytes.fromhex("2c0000801b0200800102008000000000000000000103"), + # This is FA.01 on Testnet, when the transaction changes, you need to modify the strings below according to the manifest + bytes.fromhex("f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475"), + bytes.fromhex("726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909"), + bytes.fromhex("097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569"), + bytes.fromhex("676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a223130"), + bytes.fromhex("30302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd") + ] + + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_INIT, data=dataToSend[0]) + for i in range(1, len(dataToSend)): + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_ADD, data=dataToSend[i]) + + #This is FA.01 on Testnet script hash. When the script changes, you need to update this according to the manifest + scriptHash = "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + + sI = merkleIndex[scriptHash[0:16]] + correctMetadata: bytes = bytes.fromhex(merkleTree["children"][sI[0]]["children"][sI[1]]["children"][sI[2]]["children"][sI[3]]["children"][0]) + + def get_proof_hex(merkleNode): + return "".join(x["hash"] for x in merkleNode["children"]) + + correctProof: List[bytes]= [ + bytes.fromhex(get_proof_hex(merkleTree["children"][sI[0]]["children"][sI[1]]["children"][sI[2]])), + bytes.fromhex(get_proof_hex(merkleTree["children"][sI[0]]["children"][sI[1]])), + bytes.fromhex(get_proof_hex(merkleTree["children"][sI[0]])), + bytes.fromhex(get_proof_hex(merkleTree)), + ] + + + # Test metadata not matching the transaction + # We send metadata from the same node so that the proof is correct for otherMetadata + assert sI[3] != 6 # if it is the case change [sI[3]+1] to [sI[3]-1] and change this assert to sI[3] != 0 + otherMetadata: bytes = bytes.fromhex(merkleTree["children"][sI[0]]["children"][sI[1]]["children"][sI[2]]["children"][sI[3]+1]["children"][0]) + # Proof in correctProof is correct + send_tx_body() + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_METADATA, data=otherMetadata) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[0]) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[1]) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[2]) + with pytest.raises(ExceptionRAPDU) as err: + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_LAST, data=correctProof[3]) + assert err.value.status == Errors.SW_DATA_INVALID + + # Test error in first proof step + wrongProofStep: bytes = bytes.fromhex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") + send_tx_body() + with pytest.raises(ExceptionRAPDU) as err: + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_METADATA, data=correctMetadata) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=wrongProofStep) + assert err.value.status == Errors.SW_DATA_INVALID + + # Test error in second proof + send_tx_body() + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_METADATA, data=correctMetadata) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[0]) + with pytest.raises(ExceptionRAPDU) as err2: + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=wrongProofStep) + assert err2.value.status == Errors.SW_DATA_INVALID + + # Error in the last step + send_tx_body() + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_METADATA, data=correctMetadata) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[0]) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[1]) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[2]) + with pytest.raises(ExceptionRAPDU) as err: + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_LAST, data=wrongProofStep) + assert err.value.status == Errors.SW_DATA_INVALID + + # Error comparing final hashes, last byte different + wrongLastProofStep: bytes = correctProof[3][0:-1]+bytes.fromhex("00") + send_tx_body() + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_METADATA, data=correctMetadata) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[0]) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[1]) + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_ONGOING, data=correctProof[2]) + with pytest.raises(ExceptionRAPDU) as err: + backend.exchange(cla=ClaType.CLA_APP, ins=InsType.SIGN, p1=P1.P1_PROOF_LAST, data=wrongLastProofStep) + assert err.value.status == Errors.SW_DATA_INVALID def test_transaction_params(firmware, backend, navigator, test_name): - """ Check transaction signing with different parameters """ + """ Check transaction signing with different parameters. + Uses FA.01, FA.02, FA.03 mainnet transactions from manifest.""" # Use the app interface instead of raw interface client = FlowCommandSender(backend) + + # Retrieve FA.01, FA.02, FA.03 from manifest + transactionsAndScriptHashes = get_tx_and_hash(("FA.01", "FA.02", "FA.03"), "Mainnet") + # Test parameters path: str = "m/44'/539'/513'/0/0" curve_list = [ @@ -66,27 +177,24 @@ def test_transaction_params(firmware, backend, navigator, test_name): HashType.HASH_SHA2, HashType.HASH_SHA3, ] - transactions = [ - "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88f8d6e0586b0a20c7c988f8d6e0586b0a20c7c0", - "f90289f90261b8a97472616e73616374696f6e287075626c69634b6579733a205b537472696e675d29207b0a70726570617265287369676e65723a20417574684163636f756e7429207b0a6c65742061636374203d20417574684163636f756e742870617965723a207369676e6572290a666f72206b657920696e207075626c69634b657973207b0a616363742e6164645075626c69634b6579286b65792e6465636f64654865782829290a7d0a7d0a7df90173b901707b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303934343838613739356130373730306336666238336530363663663537646664383766393263653730636263383163623362643366656132646637623637303733623730653336623434663335373862343364363464336661613265386534313565663663326235666534333930643561373865323338353831633665346263333033303330227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303934343838613739356130373730306336666238336530363663663537646664383766393263653730636263383163623362643366656132646637623637303733623730653336623434663335373862343364363464336661613265386534313565663663326235666534333930643561373865323338353831633665346263333033303331227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88f8d6e0586b0a20c7c988f8d6e0586b0a20c7e4e38004a0f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162", - "f90186f9015eb86e7472616e73616374696f6e287075626c69634b65793a20537472696e6729207b0a70726570617265287369676e65723a20417574684163636f756e7429207b0a7369676e65722e6164645075626c69634b6579287075626c69634b65792e6465636f64654865782829290a7d0a7df8acb8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303934343838613739356130373730306336666238336530363663663537646664383766393263653730636263383163623362643366656132646637623637303733623730653336623434663335373862343364363464336661613265386534313565663663326235666534333930643561373865323338353831633665346263333033303330227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88f8d6e0586b0a20c7c988f8d6e0586b0a20c7e4e38004a0f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162", - ] # Send the APDU and check the results part = 0 - for transaction in transactions: + for transaction in transactionsAndScriptHashes: for curve in curve_list: for hash_t in hash_list: part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, hash_t) + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction[0], path, curve, hash_t, transaction[1]) class Test_EXPERT(): def test_transaction_expert(self, firmware, backend, navigator, test_name): - """ Check transaction signing with expert mode """ + """ Check transaction signing with expert mode. + Uses FA.03 mainnet transaction """ # Use the app interface instead of raw interface client = FlowCommandSender(backend) + # Test parameters path: str = "m/44'/539'/0'/0/0" test_cfg = [ @@ -99,7 +207,12 @@ def test_transaction_expert(self, firmware, backend, navigator, test_name): "hash": HashType.HASH_SHA3, }, ] - transaction = "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88f8d6e0586b0a20c7c988f8d6e0586b0a20c7c0" + + # Retrieve FA.03 from manifest + transactionsAndScriptHashes = get_tx_and_hash(("FA.03",), "Mainnet") + + transaction = transactionsAndScriptHashes[0][0] + txHash = transactionsAndScriptHashes[0][1] part = 0 # Navigate in the main menu to change to expert mode @@ -108,7 +221,7 @@ def test_transaction_expert(self, firmware, backend, navigator, test_name): # Send the APDU and check the results for cfg in test_cfg: part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, cfg["curve"], cfg["hash"]) + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, cfg["curve"], cfg["hash"], txHash) def test_transaction_slot(firmware, backend, navigator, test_name): @@ -123,12 +236,16 @@ def test_transaction_slot(firmware, backend, navigator, test_name): hash_t: HashType = HashType.HASH_SHA3 bad_hash: HashType = HashType.HASH_SHA2 slot = 0 - transaction = "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88f8d6e0586b0a20c7c988f8d6e0586b0a20c7c0" address = "f8d6e0586b0a20c7" + # Retrieve FA.02 from manifest + transactionsAndScriptHashes = get_tx_and_hash(("FA.02",), "Mainnet") + transaction = transactionsAndScriptHashes[0][0] + scriptHash = transactionsAndScriptHashes[0][1] + # Send the APDU and check the results part = 0 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, hash_t) + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, hash_t, scriptHash) # Set slot to correct path correct address, part += 1 @@ -136,36 +253,43 @@ def test_transaction_slot(firmware, backend, navigator, test_name): # Sign the Tx again - incorrect hd path part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, bad_path, curve, hash_t) + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, bad_path, curve, hash_t, scriptHash) # Sign the Tx again - correct path part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, hash_t) - - # e467b9dd11fa00df - used as incorrect address; f8d6e0586b0a20c7 - correct one - transactions = [ - # tx - no match single authorizer, - "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88e467b9dd11fa00df040a88e467b9dd11fa00dfc988e467b9dd11fa00dfc0", - # tx - address matches payer - "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88e467b9dd11fa00df040a88f8d6e0586b0a20c7c988e467b9dd11fa00dfc0", - # tx - address matches proposer - "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88e467b9dd11fa00dfc988e467b9dd11fa00dfc0", - # tx - address matches sole authorizer - "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88e467b9dd11fa00df040a88e467b9dd11fa00dfc988f8d6e0586b0a20c7c0", - # tx - no match multiple authorizers - "f90251f9024db90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88e467b9dd11fa00df040a88e467b9dd11fa00dfdb88e467b9dd11fa00df88e467b9dd11fa00df88e467b9dd11fa00dfc0", - # tx - address matches 3rd auhorizer out of three - "f90251f9024db90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88e467b9dd11fa00df040a88e467b9dd11fa00dfdb88e467b9dd11fa00df88e467b9dd11fa00df88f8d6e0586b0a20c7c0", - ] + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, hash_t, scriptHash) + + # f19c161bc24cf4b4 - used as incorrect address; f8d6e0586b0a20c7 - correct one + print(transaction) + ap = [m.start() for m in re.finditer("f19c161bc24cf4b4", transaction)] + assert len(ap) == 3 + + # tx - no match single authorizer, + tx1 = transaction[:ap[0]]+"f19c161bc24cf4b4"+transaction[(ap[0]+16):ap[1]]+"f19c161bc24cf4b4"+transaction[(ap[1]+16):ap[2]]+"f19c161bc24cf4b4"+transaction[(ap[2]+16):] + # tx - address matches payer + tx2 = transaction[:ap[0]]+"f19c161bc24cf4b4"+transaction[(ap[0]+16):ap[1]]+"f8d6e0586b0a20c7"+transaction[(ap[1]+16):ap[2]]+"f19c161bc24cf4b4"+transaction[(ap[2]+16):] + # tx - address matches proposer + tx3 = transaction[:ap[0]]+"f8d6e0586b0a20c7"+transaction[(ap[0]+16):ap[1]]+"f19c161bc24cf4b4"+transaction[(ap[1]+16):ap[2]]+"f19c161bc24cf4b4"+transaction[(ap[2]+16):] + # tx - address matches sole authorizer + tx4 = transaction[:ap[0]]+"f19c161bc24cf4b4"+transaction[(ap[0]+16):ap[1]]+"f19c161bc24cf4b4"+transaction[(ap[1]+16):ap[2]]+"f8d6e0586b0a20c7"+transaction[(ap[2]+16):] + + # use online rlp encoder/decoder to fix these when FA.02 changes + # decode these transactions and he new transactions and hopefully you will know what to change and encode this + # multiple authorisers, no match + tx5 = "f90435f90431b902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4db88f19c161bc24cf4b488f19c161bc24cf4b488f19c161bc24cf4b4c0" + # tx - address matches 3rd auhorizer out of three + tx6 = "f90435f90431b902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4db88f19c161bc24cf4b488f19c161bc24cf4b488f8d6e0586b0a20c7c0" + + transactions = [tx1, tx2, tx3, tx4, tx5, tx6] # Send the APDU and check the results for blob in transactions: part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", blob, path, curve, hash_t) + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", blob, path, curve, hash_t, scriptHash) # sign the Tx again - correct path - wrong hash part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, bad_hash) + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, bad_hash, scriptHash) # Now delete the slot so that the next test starts in a clean state util_set_slot(client, firmware, navigator, test_name, slot) @@ -181,12 +305,12 @@ def test_transaction_invalid(firmware, backend, navigator, test_name): curve: CurveChoice = CurveChoice.Secp256k1 hash_t: HashType = HashType.HASH_SHA2 # Prepare an invalid message - bad_essage = "1234567890" - transaction = bad_essage.encode("utf-8").hex() + bad_message = "1234567890" + transaction = bad_message.encode("utf-8").hex() # Send the APDU and check the results try: - _check_transaction(client, firmware, navigator, test_name, transaction, path, curve, hash_t, 5) + _check_transaction(client, firmware, navigator, test_name, transaction, path, curve, hash_t, "", 5) except TimeoutError: pass @@ -200,14 +324,18 @@ def test_transaction_refused(firmware, backend, navigator, test_name): path: str = "m/44'/539'/0'/0/0" curve: CurveChoice = CurveChoice.Nist256p1 hash_t = HashType.HASH_SHA2 - transaction = "f9023ff9023bb90195696d706f72742046756e6769626c65546f6b656e2066726f6d203078656538323835366266323065326161360a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a6c6574207661756c743a204046756e6769626c65546f6b656e2e5661756c740a70726570617265287369676e65723a20417574684163636f756e7429207b0a73656c662e7661756c74203c2d207369676e65720a2e626f72726f773c267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2e776974686472617728616d6f756e743a20616d6f756e74290a7d0a65786563757465207b0a6765744163636f756e7428746f290a2e6765744361706162696c697479282f7075626c69632f666c6f77546f6b656e526563656976657229210a2e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2829210a2e6465706f7369742866726f6d3a203c2d73656c662e7661756c74290a7d0a7df861b07b2274797065223a22554669783634222c2276616c7565223a223138343436373434303733372e39353531363135227daf7b2274797065223a2241646472657373222c2276616c7565223a22307866386436653035383662306132306337227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f8d6e0586b0a20c7040a88f8d6e0586b0a20c7c988f8d6e0586b0a20c7c0" + + # Retrieve FA.01 from manifest + transactionsAndScriptHashes = get_tx_and_hash(("FA.01",), "Mainnet") + transaction = transactionsAndScriptHashes[0][0] + scriptHash = transactionsAndScriptHashes[0][1] # Convert message to bytes message = bytes.fromhex(transaction) # Send the APDU (Asynchronous) with pytest.raises(ExceptionRAPDU) as err: - with client.sign_tx(path, curve, message, hash_t): + with client.sign_tx(path, curve, message, hash_t, scriptHash): util_navigate(firmware, navigator, test_name, "REJECT_SIGN") # Assert we have received a refusal @@ -216,80 +344,178 @@ def test_transaction_refused(firmware, backend, navigator, test_name): def test_transaction_manifest(firmware, backend, navigator, test_name): - """ Check transaction based on legacy manifest file """ + """ Check transaction based on manifest file """ # Use the app interface instead of raw interface client = FlowCommandSender(backend) # Test parameters path: str = "m/44'/539'/0'/0/0" - curve: CurveChoice = CurveChoice.Nist256p1 + curve: CurveChomanifestice = CurveChoice.Nist256p1 hash_t = HashType.HASH_SHA3 - transactions = [ - "f9033cf90338b902c3696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d20616363742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9033cf90338b902c3696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d20616363742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9082af90826b90588696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e2869643a20537472696e672c20726f6c653a2055496e74382c206e6574776f726b696e67416464726573733a20537472696e672c206e6574776f726b696e674b65793a20537472696e672c207374616b696e674b65793a20537472696e672c20616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d206163636f756e742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c74207265666572656e636522290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574206e6f6465496e666f203d205374616b696e6750726f78792e4e6f6465496e666f2869643a2069642c20726f6c653a20726f6c652c206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c207374616b696e674b65793a207374616b696e674b6579290a0a20202020202020206c6574206c6f636b656442616c616e6365203d2073656c662e686f6c6465725265662e6765744c6f636b65644163636f756e7442616c616e636528290a0a2020202020202020696620616d6f756e74203c3d206c6f636b656442616c616e6365207b0a0a20202020202020202020202073656c662e686f6c6465725265662e6372656174654e6f64655374616b6572286e6f6465496e666f3a206e6f6465496e666f2c20616d6f756e743a20616d6f756e74290a0a20202020202020207d20656c7365206966202828616d6f756e74202d206c6f636b656442616c616e636529203c3d2073656c662e7661756c745265662e62616c616e636529207b0a0a20202020202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e74202d206c6f636b656442616c616e636529290a0a20202020202020202020202073656c662e686f6c6465725265662e6372656174654e6f64655374616b6572286e6f6465496e666f3a206e6f6465496e666f2c20616d6f756e743a20616d6f756e74290a0a20202020202020207d20656c7365207b0a20202020202020202020202070616e696328224e6f7420656e6f75676820746f6b656e7320746f207374616b652122290a20202020202020207d0a20202020202020200a202020207d0a7d0af90258b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90542f9053eb904c9696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d206163636f756e742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c74207265666572656e636522290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020206c6574206c6f636b656442616c616e6365203d2073656c662e686f6c6465725265662e6765744c6f636b65644163636f756e7442616c616e636528290a0a2020202020202020696620616d6f756e74203c3d206c6f636b656442616c616e6365207b0a0a2020202020202020202020207374616b657250726f78792e7374616b654e6577546f6b656e7328616d6f756e743a20616d6f756e74290a0a20202020202020207d20656c7365206966202828616d6f756e74202d206c6f636b656442616c616e636529203c3d2073656c662e7661756c745265662e62616c616e636529207b0a0a20202020202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e74202d206c6f636b656442616c616e636529290a0a2020202020202020202020207374616b657250726f78792e7374616b654e6577546f6b656e7328616d6f756e743a20616d6f756e74290a2020202020202020202020200a20202020202020207d20656c7365207b0a20202020202020202020202070616e696328224e6f7420656e6f75676820746f6b656e7320746f207374616b652122290a20202020202020207d0a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90281f9027db90208696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020207374616b657250726f78792e7374616b65556e7374616b6564546f6b656e7328616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90281f9027db90208696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020207374616b657250726f78792e7374616b655265776172646564546f6b656e7328616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9027ef9027ab90205696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020207374616b657250726f78792e72657175657374556e7374616b696e6728616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9022bf90227b901e3696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e2829207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020207374616b657250726f78792e756e7374616b65416c6c28290a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90284f90280b9020b696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020207374616b657250726f78792e7769746864726177556e7374616b6564546f6b656e7328616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90392f9038eb90319696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d206163636f756e742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20466c6f77546f6b656e2076616c756522290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020207374616b657250726f78792e77697468647261775265776172646564546f6b656e7328616d6f756e743a20616d6f756e74290a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9054af90546b90442696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f7274205374616b696e6750726f78792066726f6d203078363234333063663238633236643039350a0a7472616e73616374696f6e28616464726573733a20416464726573732c2069643a20537472696e672c20616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574206e6f64654f70657261746f72526566203d206765744163636f756e742861646472657373292e6765744361706162696c6974790a2020202020202020202020203c265374616b696e6750726f78792e4e6f64655374616b657250726f7879486f6c6465727b5374616b696e6750726f78792e4e6f64655374616b657250726f7879486f6c6465725075626c69637d3e0a202020202020202020202020285374616b696e6750726f78792e4e6f64654f70657261746f724361706162696c6974795075626c69635061746829212e626f72726f772829200a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77206e6f6465206f70657261746f72207075626c6963206361706162696c69747922290a0a20202020202020206c6574206e6f6465496e666f203d206e6f64654f70657261746f725265662e6765744e6f6465496e666f286e6f646549443a206964290a2020202020202020202020203f3f2070616e69632822436f756c646e27742067657420696e666f20666f72206e6f646549443d222e636f6e63617428696429290a0a202020202020202073656c662e686f6c6465725265662e6372656174654e6f64655374616b6572286e6f6465496e666f3a206e6f6465496e666f2c20616d6f756e743a20616d6f756e74290a0a20202020202020206c6574206e6f64655374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f775374616b657228290a0a20202020202020206e6f64654f70657261746f725265662e6164645374616b696e6750726f7879286e6f646549443a206e6f6465496e666f2e69642c2070726f78793a206e6f64655374616b657250726f7879290a202020207d0a7d0af8bfaf7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227db85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90593f9058fb904bb696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829200a2020202020202020202020203f3f2070616e69632822546f6b656e486f6c646572206973206e6f7420736176656420617420737065636966696564207061746822290a0a202020202020202073656c662e7661756c74526566203d206163636f756e742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c74207265666572656e636522290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6372656174654e6f646544656c656761746f72286e6f646549443a206964290a0a20202020202020206c65742064656c656761746f7250726f7879203d2073656c662e686f6c6465725265662e626f72726f7744656c656761746f7228290a0a20202020202020206c6574206c6f636b656442616c616e6365203d2073656c662e686f6c6465725265662e6765744c6f636b65644163636f756e7442616c616e636528290a0a2020202020202020696620616d6f756e74203c3d206c6f636b656442616c616e6365207b0a0a20202020202020202020202064656c656761746f7250726f78792e64656c65676174654e6577546f6b656e7328616d6f756e743a20616d6f756e74290a0a20202020202020207d20656c7365206966202828616d6f756e74202d206c6f636b656442616c616e636529203c3d2073656c662e7661756c745265662e62616c616e636529207b0a0a20202020202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e74202d206c6f636b656442616c616e636529290a0a20202020202020202020202064656c656761746f7250726f78792e64656c65676174654e6577546f6b656e7328616d6f756e743a20616d6f756e74290a0a20202020202020207d20656c7365207b0a20202020202020202020202070616e696328224e6f7420656e6f75676820746f6b656e7320746f207374616b652122290a20202020202020207d0a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90511f9050db90498696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a0a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d206163636f756e742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c74207265666572656e636522290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207374616b657250726f7879203d2073656c662e686f6c6465725265662e626f72726f7744656c656761746f7228290a0a20202020202020206c6574206c6f636b656442616c616e6365203d2073656c662e686f6c6465725265662e6765744c6f636b65644163636f756e7442616c616e636528290a0a2020202020202020696620616d6f756e74203c3d206c6f636b656442616c616e6365207b0a0a2020202020202020202020207374616b657250726f78792e64656c65676174654e6577546f6b656e7328616d6f756e743a20616d6f756e74290a0a20202020202020207d20656c7365206966202828616d6f756e74202d206c6f636b656442616c616e636529203c3d2073656c662e7661756c745265662e62616c616e636529207b0a0a20202020202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e74202d206c6f636b656442616c616e636529290a0a2020202020202020202020207374616b657250726f78792e64656c65676174654e6577546f6b656e7328616d6f756e743a20616d6f756e74290a20202020202020207d20656c7365207b0a20202020202020202020202070616e696328224e6f7420656e6f75676820746f6b656e7320746f207374616b652122290a20202020202020207d0a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9027ff9027bb90206696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a202020206c6574206e6f646544656c656761746f7250726f78793a204c6f636b6564546f6b656e732e4c6f636b65644e6f646544656c656761746f7250726f78790a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a20202020202020206c657420686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829200a2020202020202020202020203f3f2070616e69632822546f6b656e486f6c646572206973206e6f7420736176656420617420737065636966696564207061746822290a0a202020202020202073656c662e6e6f646544656c656761746f7250726f7879203d20686f6c6465725265662e626f72726f7744656c656761746f7228290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e6e6f646544656c656761746f7250726f78792e64656c6567617465556e7374616b6564546f6b656e7328616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90287f90283b9020e696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a202020206c6574206e6f646544656c656761746f7250726f78793a204c6f636b6564546f6b656e732e4c6f636b65644e6f646544656c656761746f7250726f78790a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a20202020202020206c657420686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829200a2020202020202020202020203f3f2070616e69632822546f6b656e486f6c646572206973206e6f7420736176656420617420737065636966696564207061746822290a20202020202020200a202020202020202073656c662e6e6f646544656c656761746f7250726f7879203d20686f6c6465725265662e626f72726f7744656c656761746f7228290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e6e6f646544656c656761746f7250726f78792e64656c65676174655265776172646564546f6b656e7328616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90281f9027db90208696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a202020206c6574206e6f646544656c656761746f7250726f78793a204c6f636b6564546f6b656e732e4c6f636b65644e6f646544656c656761746f7250726f78790a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a20202020202020206c657420686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829200a2020202020202020202020203f3f2070616e69632822546f6b656e486f6c646572206973206e6f7420736176656420617420737065636966696564207061746822290a20202020202020200a202020202020202073656c662e6e6f646544656c656761746f7250726f7879203d20686f6c6465725265662e626f72726f7744656c656761746f7228290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e6e6f646544656c656761746f7250726f78792e72657175657374556e7374616b696e6728616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90287f90283b9020e696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a202020206c6574206e6f646544656c656761746f7250726f78793a204c6f636b6564546f6b656e732e4c6f636b65644e6f646544656c656761746f7250726f78790a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a20202020202020206c657420686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829200a2020202020202020202020203f3f2070616e69632822546f6b656e486f6c646572206973206e6f7420736176656420617420737065636966696564207061746822290a20202020202020200a202020202020202073656c662e6e6f646544656c656761746f7250726f7879203d20686f6c6465725265662e626f72726f7744656c656761746f7228290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e6e6f646544656c656761746f7250726f78792e7769746864726177556e7374616b6564546f6b656e7328616d6f756e743a20616d6f756e74290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9039cf90398b90323696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a2026466c6f77546f6b656e2e5661756c740a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d206163636f756e742e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829200a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20546f6b656e486f6c64657222290a0a202020202020202073656c662e7661756c74526566203d206163636f756e742e626f72726f773c26466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20466c6f77546f6b656e2076616c756522290a202020207d0a0a2020202065786563757465207b0a20202020202020206c65742064656c656761746f7250726f7879203d2073656c662e686f6c6465725265662e626f72726f7744656c656761746f7228290a0a202020202020202064656c656761746f7250726f78792e77697468647261775265776172646564546f6b656e7328616d6f756e743a20616d6f756e74290a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9029ef9029ab90226696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a0a7472616e73616374696f6e286e6577416464726573733a20537472696e6729207b0a0a202020202f2f204c6f63616c207661726961626c6520666f722061207265666572656e636520746f20746865206e6f6465206f626a6563740a202020206c6574207374616b65725265663a2026466c6f7749445461626c655374616b696e672e4e6f64655374616b65720a0a202020207072657061726528616363743a20417574684163636f756e7429207b0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865206e6f6465206f626a6563740a202020202020202073656c662e7374616b6572526566203d20616363742e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f207374616b696e672061646d696e22290a202020207d0a0a2020202065786563757465207b0a0a202020202020202073656c662e7374616b65725265662e7570646174654e6574776f726b696e6741646472657373286e657741646472657373290a0a202020207d0a7df0af7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90bf4f90bf0b90bac696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a20417574684163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6c696e6b3c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e282f707269766174652f666c6f77546f6b656e486f6c6465722c207461726765743a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6c696e6b3c26466c6f77546f6b656e2e5661756c743e282f707269766174652f666c6f77546f6b656e5661756c742c207461726765743a202f73746f726167652f666c6f77546f6b656e5661756c7429210a2020202020202020202020200a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73617665283c2d466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e28756e6c6f636b65645661756c743a20666c6f77546f6b656e2c20746f6b656e486f6c6465723a206c6f636b6564486f6c646572292c20746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73617665283c2d466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e28756e6c6f636b65645661756c743a20666c6f77546f6b656e2c20746f6b656e486f6c6465723a206e696c292c20746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020207d0a0a2020202020202020202020202f2f204372656174652061207075626c6963206c696e6b20746f20746865207374616b696e6720636f6c6c656374696f6e0a2020202020202020202020207369676e65722e6c696e6b3c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e7b466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c69637d3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174682c0a202020202020202020202020202020207461726765743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90373f9036fb9029b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f907f7f907f3b90534696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b537472696e675d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90279b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9080ef9080ab90534696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b537472696e675d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90290b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db77b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f908b9f908b5b90534696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b537472696e675d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af9033bb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db8e17b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90a10f90a0cb90534696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b537472696e675d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90492b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db902377b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f904e6f904e2b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af87ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9b7b2274797065223a224172726179222c2276616c7565223a5b5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90592f9058eb90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90125b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8c57b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f906e9f906e5b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af9027cb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db9021b7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9039df90399b902a4696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903b8f903b4b902a4696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90419f90415b90320696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90434f90430b90320696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903aef903aab902b5696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903c9f903c5b902b5696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903aef903aab902b5696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903c9f903c5b902b5696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90301f902fdb9025a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9046af90466b90356696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9044ff9044bb90356696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9045ef9045ab90365696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90479f90475b90365696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903d1f903cdb902ee696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f903b6f903b2b902ee696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9090bf90907b90834696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f6f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e7b466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c69637d0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6765744361706162696c6974793c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e7b466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c69637d3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468292e626f72726f7728290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f908b8f908b4b907c2696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f6f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e7b466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c69637d0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6765744361706162696c6974793c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e7b466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c69637d3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468292e626f72726f7728290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2274797065223a2255496e743332222c2276616c7565223a223432227daf7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90382f9037eb902aa696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90343f9033fb9026c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9057ef9057ab905362f2f2054686973207472616e73616374696f6e20636f6e6669677572657320746865207369676e65722773206163636f756e74207769746820616e20656d7074792046555344207661756c742e0a2f2f0a2f2f20497420616c736f206c696e6b732074686520666f6c6c6f77696e67206361706162696c69746965733a0a2f2f0a2f2f202d2046756e6769626c65546f6b656e2e52656365697665723a2074686973206361706162696c69747920616c6c6f77732074686973206163636f756e7420746f206163636570742046555344206465706f736974732e0a2f2f202d2046756e6769626c65546f6b656e2e42616c616e63653a2074686973206361706162696c69747920616c6c6f777320616e79626f647920746f20696e73706563742074686520465553442062616c616e6365206f662074686973206163636f756e742e0a0a696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420465553442066726f6d203078336335393539623536383839363339330a0a7472616e73616374696f6e207b0a0a2020202070726570617265287369676e65723a20417574684163636f756e7429207b0a0a20202020202020202f2f2049742773204f4b20696620746865206163636f756e7420616c7265616479206861732061205661756c742c2062757420776520646f6e27742077616e7420746f207265706c6163652069740a20202020202020206966287369676e65722e626f72726f773c26465553442e5661756c743e2866726f6d3a202f73746f726167652f667573645661756c742920213d206e696c29207b0a20202020202020202020202072657475726e0a20202020202020207d0a20202020202020200a20202020202020202f2f204372656174652061206e65772046555344205661756c7420616e642070757420697420696e2073746f726167650a20202020202020207369676e65722e73617665283c2d465553442e637265617465456d7074795661756c7428292c20746f3a202f73746f726167652f667573645661756c74290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920746f20746865205661756c742074686174206f6e6c79206578706f7365730a20202020202020202f2f20746865206465706f7369742066756e6374696f6e207468726f7567682074686520526563656976657220696e746572666163650a20202020202020207369676e65722e6c696e6b3c26465553442e5661756c747b46756e6769626c65546f6b656e2e52656365697665727d3e280a2020202020202020202020202f7075626c69632f6675736452656365697665722c0a2020202020202020202020207461726765743a202f73746f726167652f667573645661756c740a2020202020202020290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920746f20746865205661756c742074686174206f6e6c79206578706f7365730a20202020202020202f2f207468652062616c616e6365206669656c64207468726f756768207468652042616c616e636520696e746572666163650a20202020202020207369676e65722e6c696e6b3c26465553442e5661756c747b46756e6769626c65546f6b656e2e42616c616e63657d3e280a2020202020202020202020202f7075626c69632f6675736442616c616e63652c0a2020202020202020202020207461726765743a202f73746f726167652f667573645661756c740a2020202020202020290a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9075df90759b906b32f2f2054686973207472616e73616374696f6e2077697468647261777320465553442066726f6d20746865207369676e65722773206163636f756e7420616e64206465706f7369747320697420696e746f206120726563697069656e74206163636f756e742e200a2f2f2054686973207472616e73616374696f6e2077696c6c206661696c2069662074686520726563697069656e7420646f6573206e6f74206861766520616e20465553442072656365697665722e200a2f2f204e6f2066756e647320617265207472616e73666572726564206f72206c6f737420696620746865207472616e73616374696f6e206661696c732e0a2f2f0a2f2f20506172616d65746572733a0a2f2f202d20616d6f756e743a2054686520616d6f756e74206f66204655534420746f207472616e736665722028652e672e2031302e30290a2f2f202d20746f3a2054686520726563697069656e74206163636f756e7420616464726573732e0a2f2f0a2f2f2054686973207472616e73616374696f6e2077696c6c206661696c20696620656974686572207468652073656e646572206f7220726563697069656e7420646f6573206e6f7420686176650a2f2f20616e2046555344207661756c742073746f72656420696e207468656972206163636f756e742e20546f20636865636b20696620616e206163636f756e74206861732061207661756c740a2f2f206f7220696e697469616c697a652061206e6577207661756c742c2075736520636865636b5f667573645f7661756c745f73657475702e63646320616e642073657475705f667573645f7661756c742e6364630a2f2f20726573706563746976656c792e0a0a696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420465553442066726f6d203078336335393539623536383839363339330a0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742073656e745661756c743a204046756e6769626c65546f6b656e2e5661756c740a0a2020202070726570617265287369676e65723a20417574684163636f756e7429207b0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e626f72726f773c26465553442e5661756c743e2866726f6d3a202f73746f726167652f667573645661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a20202020202020202f2f20576974686472617720746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c740a202020202020202073656c662e73656e745661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f204765742074686520726563697069656e742773207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520726563697069656e7427732052656365697665720a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6765744361706162696c697479282f7075626c69632f66757364526563656976657229212e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e28290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265636569766572207265666572656e636520746f2074686520726563697069656e742773205661756c7422290a0a20202020202020202f2f204465706f736974207468652077697468647261776e20746f6b656e7320696e2074686520726563697069656e7427732072656365697665720a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e73656e745661756c74290a202020207d0a7d0af861b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90388f90384b90340696d706f727420546f7053686f742066726f6d203078306232613332393963633835376532390a0a2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f2075736520546f702053686f740a2f2f2062792073746f72696e6720616e20656d707479206d6f6d656e7420636f6c6c656374696f6e20616e64206372656174696e670a2f2f2061207075626c6963206361706162696c69747920666f722069740a0a7472616e73616374696f6e207b0a0a202020207072657061726528616363743a20417574684163636f756e7429207b0a0a20202020202020202f2f2046697273742c20636865636b20746f207365652069662061206d6f6d656e7420636f6c6c656374696f6e20616c7265616479206578697374730a2020202020202020696620616363742e626f72726f773c26546f7053686f742e436f6c6c656374696f6e3e2866726f6d3a202f73746f726167652f4d6f6d656e74436f6c6c656374696f6e29203d3d206e696c207b0a0a2020202020202020202020202f2f206372656174652061206e657720546f7053686f7420436f6c6c656374696f6e0a2020202020202020202020206c657420636f6c6c656374696f6e203c2d20546f7053686f742e637265617465456d707479436f6c6c656374696f6e2829206173212040546f7053686f742e436f6c6c656374696f6e0a0a2020202020202020202020202f2f2050757420746865206e657720436f6c6c656374696f6e20696e2073746f726167650a202020202020202020202020616363742e73617665283c2d636f6c6c656374696f6e2c20746f3a202f73746f726167652f4d6f6d656e74436f6c6c656374696f6e290a0a2020202020202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a202020202020202020202020616363742e6c696e6b3c267b546f7053686f742e4d6f6d656e74436f6c6c656374696f6e5075626c69637d3e282f7075626c69632f4d6f6d656e74436f6c6c656374696f6e2c207461726765743a202f73746f726167652f4d6f6d656e74436f6c6c656374696f6e290a20202020202020207d0a202020207d0a7dc0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90685f90681b905ed696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f727420546f7053686f742066726f6d203078306232613332393963633835376532390a0a2f2f2054686973207472616e73616374696f6e207472616e73666572732061206d6f6d656e7420746f206120726563697069656e740a0a2f2f2054686973207472616e73616374696f6e20697320686f77206120746f7073686f74207573657220776f756c64207472616e736665722061206d6f6d656e740a2f2f2066726f6d207468656972206163636f756e7420746f20616e6f74686572206163636f756e740a2f2f2054686520726563697069656e74206d7573742068617665206120546f7053686f7420436f6c6c656374696f6e206f626a6563742073746f7265640a2f2f20616e642061207075626c6963204d6f6d656e74436f6c6c656374696f6e5075626c6963206361706162696c6974792073746f7265642061740a2f2f20602f7075626c69632f4d6f6d656e74436f6c6c656374696f6e600a0a2f2f20506172616d65746572733a0a2f2f0a2f2f20726563697069656e743a2054686520466c6f772061646472657373206f6620746865206163636f756e7420746f207265636569766520746865206d6f6d656e742e0a2f2f20776974686472617749443a20546865206964206f6620746865206d6f6d656e7420746f206265207472616e736665727265640a0a7472616e73616374696f6e28726563697069656e743a20416464726573732c20776974686472617749443a2055496e74363429207b0a0a202020202f2f206c6f63616c207661726961626c6520666f722073746f72696e6720746865207472616e7366657272656420746f6b656e0a202020206c6574207472616e73666572546f6b656e3a20404e6f6e46756e6769626c65546f6b656e2e4e46540a202020200a202020207072657061726528616363743a20417574684163636f756e7429207b0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865206f776e6572277320636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d20616363742e626f72726f773c26546f7053686f742e436f6c6c656374696f6e3e2866726f6d3a202f73746f726167652f4d6f6d656e74436f6c6c656374696f6e290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652073746f726564204d6f6d656e7420636f6c6c656374696f6e22290a20202020202020200a20202020202020202f2f20776974686472617720746865204e46540a202020202020202073656c662e7472616e73666572546f6b656e203c2d20636f6c6c656374696f6e5265662e776974686472617728776974686472617749443a2077697468647261774944290a202020207d0a0a2020202065786563757465207b0a20202020202020200a20202020202020202f2f206765742074686520726563697069656e742773207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428726563697069656e74290a0a20202020202020202f2f206765742074686520436f6c6c656374696f6e207265666572656e636520666f72207468652072656365697665720a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6765744361706162696c697479282f7075626c69632f4d6f6d656e74436f6c6c656374696f6e292e626f72726f773c267b546f7053686f742e4d6f6d656e74436f6c6c656374696f6e5075626c69637d3e2829210a0a20202020202020202f2f206465706f73697420746865204e465420696e207468652072656365697665727320636f6c6c656374696f6e0a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e7472616e73666572546f6b656e290a202020207d0a7df84faf7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2274797065223a2255496e743634222c2276616c7565223a223432227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f905bdf905b9b90575696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046696174546f6b656e2066726f6d203078623139343336616165346439343632320a0a7472616e73616374696f6e207b0a0a2020202070726570617265287369676e65723a20417574684163636f756e7429207b0a0a20202020202020202f2f2052657475726e206561726c7920696620746865206163636f756e7420616c72656164792073746f72657320612046696174546f6b656e205661756c740a20202020202020206966207369676e65722e626f72726f773c2646696174546f6b656e2e5661756c743e2866726f6d3a2046696174546f6b656e2e5661756c7453746f72616765506174682920213d206e696c207b0a20202020202020202020202072657475726e0a20202020202020207d0a0a20202020202020202f2f204372656174652061206e6577204578616d706c65546f6b656e205661756c7420616e642070757420697420696e2073746f726167650a20202020202020207369676e65722e73617665280a2020202020202020202020203c2d46696174546f6b656e2e637265617465456d7074795661756c7428292c0a202020202020202020202020746f3a2046696174546f6b656e2e5661756c7453746f72616765506174680a2020202020202020290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920746f20746865205661756c742074686174206f6e6c79206578706f7365730a20202020202020202f2f20746865206465706f7369742066756e6374696f6e207468726f7567682074686520526563656976657220696e746572666163650a20202020202020207369676e65722e6c696e6b3c2646696174546f6b656e2e5661756c747b46756e6769626c65546f6b656e2e52656365697665727d3e280a20202020202020202020202046696174546f6b656e2e5661756c745265636569766572507562506174682c0a2020202020202020202020207461726765743a2046696174546f6b656e2e5661756c7453746f72616765506174680a2020202020202020290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920746f20746865205661756c742074686174206f6e6c79206578706f7365730a20202020202020202f2f20746865205555494428292066756e6374696f6e207468726f75676820746865205661756c745555494420696e746572666163650a20202020202020207369676e65722e6c696e6b3c2646696174546f6b656e2e5661756c747b46696174546f6b656e2e5265736f7572636549647d3e280a20202020202020202020202046696174546f6b656e2e5661756c7455554944507562506174682c0a2020202020202020202020207461726765743a2046696174546f6b656e2e5661756c7453746f72616765506174680a2020202020202020290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920746f20746865205661756c742074686174206f6e6c79206578706f7365730a20202020202020202f2f207468652062616c616e6365206669656c64207468726f756768207468652042616c616e636520696e746572666163650a20202020202020207369676e65722e6c696e6b3c2646696174546f6b656e2e5661756c747b46756e6769626c65546f6b656e2e42616c616e63657d3e280a20202020202020202020202046696174546f6b656e2e5661756c7442616c616e6365507562506174682c0a2020202020202020202020207461726765743a2046696174546f6b656e2e5661756c7453746f72616765506174680a2020202020202020290a0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90507f90503b9046f696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046696174546f6b656e2066726f6d203078623139343336616165346439343632320a0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a204164647265737329207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742073656e745661756c743a204046756e6769626c65546f6b656e2e5661756c740a0a2020202070726570617265287369676e65723a20417574684163636f756e7429207b0a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e626f72726f773c2646696174546f6b656e2e5661756c743e2866726f6d3a2046696174546f6b656e2e5661756c7453746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a20202020202020202f2f20576974686472617720746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c740a202020202020202073656c662e73656e745661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a0a20202020202020202f2f204765742074686520726563697069656e742773207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520726563697069656e7427732052656365697665720a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6765744361706162696c6974792846696174546f6b656e2e5661756c74526563656976657250756250617468290a2020202020202020202020202e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e28290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265636569766572207265666572656e636520746f2074686520726563697069656e742773205661756c7422290a0a20202020202020202f2f204465706f736974207468652077697468647261776e20746f6b656e7320696e2074686520726563697069656e7427732072656365697665720a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e73656e745661756c74290a202020207d0a7d0af84f9e7b2274797065223a22554669783634222c2276616c7565223a223432227daf7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9084df90849b9058a696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90279b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90864f90860b9058a696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90290b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db77b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9090ff9090bb9058a696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af9033bb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db8e17b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f90a66f90a62b9058a696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90492b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db902377b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9053bf90537b90478696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b657973207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af87ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9b7b2274797065223a224172726179222c2276616c7565223a5b5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f905e7f905e3b90478696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b657973207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90125b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8c57b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - "f9073ef9073ab90478696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b657973207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af9027cb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db9021b7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", - ] - + with open(MANIFEST_FILE) as json_file: + transactions = json.load(json_file) + # Send the APDU and check the results - part = 0 for transaction in transactions: - part += 1 - _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", transaction, path, curve, hash_t) + title_split = transaction["title"].split() + tx_name = transaction["title"].split()[0] + if len(title_split) > 3 and title_split[-2] == "-": + tx_name = tx_name+"-"+title_split[-1] + chain = transaction["chainID"] + _check_transaction(client, firmware, navigator, f"{test_name}/{tx_name}-{chain}", transaction["encodedTransactionEnvelopeHex"], path, curve, hash_t, transaction["hash"]) + +class Test_MESSAGE(): + def test_message_normal(self, firmware, backend, navigator, test_name): + """ Check message signing, short message """ + + # Use the app interface instead of raw interface + client = FlowCommandSender(backend) + # Test parameters + path: str = "m/44'/539'/0'/0/0" + test_cfg = [ + { + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + # "This is a nice message that has only displayable characters and is short enough to be displayed" + "message": "546869732069732061206e696365206d657373616765207468617420686173206f6e6c7920646973706c617961626c65206368617261637465727320616e642069732073686f727420656e6f75676820746f20626520646973706c61796564" + }, + { + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + # Message too long to be displayed normally + "message": 1000*"40" + }, + { + "curve": CurveChoice.Nist256p1, + "hash": HashType.HASH_SHA3, + # "This is a nice message that has only displayable characters and is short enough to be displayed" + "message": "546869732069732061206e696365206d657373616765207468617420686173206f6e6c7920646973706c617961626c65206368617261637465727320616e642069732073686f727420656e6f75676820746f20626520646973706c61796564" + }, + { + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + # Message too long to be displayed normally + "message": 1000*"40" + }, + ] + + part = 0 + + # Send the APDU and check the results + for i,cfg in enumerate(test_cfg): + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", cfg["message"], path, cfg["curve"], cfg["hash"], "message") + part += 1 + if i == 0 or i == 3: + # Navigate in the main menu to change to expert mode + util_set_expert_mode(firmware, navigator, f"{test_name}/part{part}") + part += 1 + + + def test_message_invalid(self, firmware, backend, navigator, test_name): + """ Check message signing, message with non-displayale character """ + + # Use the app interface instead of raw interface + client = FlowCommandSender(backend) + # Test parameters + path: str = "m/44'/539'/0'/0/0" + test_cfg = [ + { + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + # Message with non-displayable characters + "message": "4d657373616765ee" + }, + { + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + # Message too long to display and expert mode is off + "message": 1000*"40" + }, + ] + + part = 0 + + # Send the APDU and check the results + for cfg in test_cfg: + # Convert message to bytes + message = bytes.fromhex(cfg["message"]) + + # Send the APDU (Asynchronous) + with pytest.raises(ExceptionRAPDU) as err: + with client.sign_tx(path, cfg["curve"], message, cfg["hash"], "message"): + pass + assert(str(err) == "") + part += 1 + + +class Test_ARBITRARY(): + def test_arbitrary_transaction_signing_fail_in_no_expert_mode(self, firmware, backend, navigator, test_name): + """ Check arbitrary transaction signing without expert mode - should fail """ + + # Use the app interface instead of raw interface + client = FlowCommandSender(backend) + # Test parameters + path: str = "m/44'/539'/0'/0/0" + cfg = { + "tx": "f906e9f906e5b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af9027cb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db9021b7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + } + + part = 0 + # Send the APDU and check the results + with pytest.raises(ExceptionRAPDU) as err: + with client.sign_tx(path, cfg["curve"], bytes.fromhex(cfg["tx"]), cfg["hash"], "arbitrary"): + pass + assert(str(err) == "") + + def test_arbitrary_transaction_signing_expert(self, firmware, backend, navigator, test_name): + """ Check arbitrary transaction signing with expert mode """ + + # Use the app interface instead of raw interface + client = FlowCommandSender(backend) + # Test parameters + path: str = "m/44'/539'/0'/0/0" + test_cfg = [ + { + "tx": "f906e9f906e5b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af9027cb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db9021b7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d2c7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + }, + { + "tx": "f904e6f904e2b90423696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c207075626c69634b6579733a205b537472696e675d29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af87ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9b7b2274797065223a224172726179222c2276616c7565223a5b5d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "curve": CurveChoice.Nist256p1, + "hash": HashType.HASH_SHA3, + }, + { + "tx": "f9039df90399b902a4696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2274797065223a224f7074696f6e616c222c2276616c7565223a6e756c6c7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + }, + { + "tx": "f903b8f903b4b902a4696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a2255496e743332222c2276616c7565223a223432227d7db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + }, + { + "tx": "f90864f90860b9058a696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b43727970746f2e4b65794c697374456e7472795d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a206b65792e7075626c69634b65792c2068617368416c676f726974686d3a206b65792e68617368416c676f726974686d2c207765696768743a206b65792e776569676874290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af90290b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db77b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + }, + { + "tx": "f908b9f908b5b90534696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020207075626c69634b6579733a205b537472696e675d3f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a20417574684163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772072656620746f205374616b696e67436f6c6c656374696f6e22290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e7429200a20202020202020207b0a2020202020202020202020206966207075626c69634b657973203d3d206e696c207c7c207075626c69634b657973212e6c656e677468203d3d2030207b0a2020202020202020202020202020202070616e6963282243616e6e6f742070726f76696465207a65726f206b65797320666f7220746865206d616368696e65206163636f756e7422290a2020202020202020202020207d0a202020202020202020202020666f72206b657920696e207075626c69634b65797321207b0a202020202020202020202020202020206d616368696e654163636f756e742e6164645075626c69634b6579286b65792e6465636f64654865782829290a2020202020202020202020207d0a20202020202020207d0a202020207d0a7d0af9033bb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2274797065223a2255496e7438222c2276616c7565223a2231227daf7b2274797065223a22537472696e67222c2276616c7565223a22666c6f772d6e6f64652e746573743a33353639227db89c7b2274797065223a22537472696e67222c2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534227db8dc7b2274797065223a22537472696e67222c2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233227db07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227db8e17b2274797065223a224f7074696f6e616c222c2276616c7565223a7b2274797065223a224172726179222c2276616c7565223a5b7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d5d7d7da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "curve": CurveChoice.Secp256k1, + "hash": HashType.HASH_SHA2, + }, + ] + + part = 0 + # Navigate in the main menu to change to expert mode + util_set_expert_mode(firmware, navigator, f"{test_name}/part{part}") + + # Send the APDU and check the results + for cfg in test_cfg: + part += 1 + _check_transaction(client, firmware, navigator, f"{test_name}/part{part}", cfg["tx"], path, cfg["curve"], cfg["hash"], "arbitrary") + diff --git a/tests/test_version.py b/tests/test_version.py index 6e149bbb..d2a444a1 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -3,7 +3,7 @@ from ragger.utils.misc import get_current_app_name_and_version -APP_VERSION = "0.12.0" +APP_VERSION = "0.13.0" class TargetId(): diff --git a/tests/utils.py b/tests/utils.py index c071d9b1..df7ecce0 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -16,16 +16,24 @@ ROOT_SCREENSHOT_PATH = Path(__file__).parent.resolve() TX_DOMAIN_TAG = "FLOW-V0.0-transaction" +MESSAGE_DOMAIN_TAG = "FLOW-V0.0-user" DOMAIN_TAG_LENGTH = 32 -def _init_header() -> bytes: +def _init_header(signable_type: str) -> bytes: """ Prepare the message Header (DOMAIN_TAG) """ - hdr = TX_DOMAIN_TAG.encode("utf-8").hex() - pad_size = DOMAIN_TAG_LENGTH - len(TX_DOMAIN_TAG) - hdr += bytearray([0] * pad_size).hex() - return bytes.fromhex(hdr) + if signable_type == "message": + hdr = MESSAGE_DOMAIN_TAG.encode("utf-8").hex() + pad_size = DOMAIN_TAG_LENGTH - len(MESSAGE_DOMAIN_TAG) + hdr += bytearray([0] * pad_size).hex() + return bytes.fromhex(hdr) + + else: + hdr = TX_DOMAIN_TAG.encode("utf-8").hex() + pad_size = DOMAIN_TAG_LENGTH - len(TX_DOMAIN_TAG) + hdr += bytearray([0] * pad_size).hex() + return bytes.fromhex(hdr) def util_check_signature( @@ -34,6 +42,7 @@ def util_check_signature( message: bytes, curve: CurveChoice, hash_t: HashType, + signable_type: str ) -> bool: """ Check if the signature of a given message is valid """ @@ -57,7 +66,7 @@ def util_check_signature( key: VerifyingKey = VerifyingKey.from_string(public_key, ec_curve, hashfunc) # Prepare the message Header (DOMAIN_TAG) - data = _init_header() + message + data = _init_header(signable_type) + message assert key.verify(signature, data, hashfunc, sigdecode_der) diff --git a/transaction_metadata/manifest.mainnet.json b/transaction_metadata/manifest.mainnet.json new file mode 100644 index 00000000..cfa472ce --- /dev/null +++ b/transaction_metadata/manifest.mainnet.json @@ -0,0 +1,1132 @@ +{ + "network": "mainnet", + "templates": [ + { + "id": "FA.01", + "name": "Create Account", + "source": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) \u0026Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm \u003e= 1 \u0026\u0026 signatureAlgorithm \u003c= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm \u003e= 1 \u0026\u0026 hashAlgorithm \u003c= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight \u003c= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "name": "key", + "label": "Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "signatureAlgorithm", + "label": "Raw Value for Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "hashAlgorithm", + "label": "Raw Value for Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UFix64", + "name": "weight", + "label": "Key Weight", + "sampleValues": [ + { + "value": "1000.00000000", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "id": "FA.02", + "name": "Add Key", + "source": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) \u0026Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm \u003e= 1 \u0026\u0026 signatureAlgorithm \u003c= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm \u003e= 1 \u0026\u0026 hashAlgorithm \u003c= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight \u003c= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "name": "key", + "label": "Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "signatureAlgorithm", + "label": "Raw Value for Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "hashAlgorithm", + "label": "Raw Value for Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UFix64", + "name": "weight", + "label": "Key Weight", + "sampleValues": [ + { + "value": "1000.00000000", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "id": "FA.03", + "name": "Remove Key", + "source": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) \u0026Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "name": "keyIndex", + "label": "Key Index", + "sampleValues": [ + { + "value": "1", + "type": "Int" + } + ] + } + ], + "network": "mainnet", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "id": "FT.01", + "name": "Setup Fungible Token Vault", + "source": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) \u0026Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{FungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cFungibleTokenMetadataViews.FTVaultData\u003e()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault \u003c-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(\u003c-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue\u003c\u0026{FungibleToken.Vault}\u003e(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue\u003c\u0026{FungibleToken.Receiver}\u003e(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "name": "contractAddress", + "label": "FT Contract Address", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "FT Contract Name", + "sampleValues": [ + { + "value": "FiatToken", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "0246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b" + }, + { + "id": "FT.02", + "name": "Transfer Fungible Token with Paths", + "source": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026{FungibleToken.Provider}\u003e(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault \u003c- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{FungibleToken.Receiver}\u003e(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: \u003c-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + }, + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "senderPathIdentifier", + "label": "Sender's Collection Path Identifier", + "sampleValues": [ + { + "value": "flowTokenVault", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "receiverPathIdentifier", + "label": "Recipient's Receiver Path Identifier", + "sampleValues": [ + { + "value": "flowTokenReceiver", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "6e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e" + }, + { + "id": "FT.03", + "name": "Transfer Fungible Token with Address", + "source": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{FungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cFungibleTokenMetadataViews.FTVaultData\u003e()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026{FungibleToken.Provider}\u003e(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault \u003c- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{FungibleToken.Receiver}\u003e(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: \u003c-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + }, + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "Address", + "name": "contractAddress", + "label": "FT Contract Address", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "FT Contract Name", + "sampleValues": [ + { + "value": "FiatToken", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e600" + }, + { + "id": "NFT.01", + "name": "Setup NFT Collection", + "source": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) \u0026Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{NonFungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cMetadataViews.NFTCollectionData\u003e()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection \u003c- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(\u003c-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue\u003c\u0026{NonFungibleToken.Collection}\u003e(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "name": "contractAddress", + "label": "NFT Contract Address", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "NFT Contract Name", + "sampleValues": [ + { + "value": "TopShot", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e76611" + }, + { + "id": "NFT.02", + "name": "Transfer NFT with Paths", + "source": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow\u003cauth(NonFungibleToken.Withdraw) \u0026{NonFungibleToken.Collection}\u003e(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT \u003c- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{NonFungibleToken.Receiver}\u003e(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: \u003c-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "UInt64", + "name": "id", + "label": "NFT ID to Transfer", + "sampleValues": [ + { + "value": "10", + "type": "UInt64" + } + ] + }, + { + "type": "String", + "name": "senderPathIdentifier", + "label": "Sender's Collection Path Identifier", + "sampleValues": [ + { + "value": "flowTokenVault", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "receiverPathIdentifier", + "label": "Recipient's Receiver Path Identifier", + "sampleValues": [ + { + "value": "flowTokenReceiver", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd1365" + }, + { + "id": "NFT.03", + "name": "Transfer NFT with Address", + "source": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{NonFungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cMetadataViews.NFTCollectionData\u003e()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow\u003cauth(NonFungibleToken.Withdraw) \u0026{NonFungibleToken.Collection}\u003e(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT \u003c- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{NonFungibleToken.Receiver}\u003e(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: \u003c-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "UInt64", + "name": "id", + "label": "NFT ID to Transfer", + "sampleValues": [ + { + "value": "10", + "type": "UInt64" + } + ] + }, + { + "type": "Address", + "name": "contractAddress", + "label": "NFT Contract Address", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "NFT Contract Name", + "sampleValues": [ + { + "value": "TopShot", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb5" + }, + { + "id": "TH.01", + "name": "Withdraw Unlocked FLOW", + "source": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) \u0026LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) \u0026FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) \u0026Account) {\n self.holderRef = acct.storage.borrow\u003cauth(LockedTokens.TokenOperations, FungibleToken.Withdraw) \u0026LockedTokens.TokenHolder\u003e(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026FlowToken.Vault\u003e(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: \u003c-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "4a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9" + }, + { + "id": "TH.02", + "name": "Deposit Unlocked FLOW", + "source": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: \u0026LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) \u0026FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) \u0026Account) {\n self.holderRef = acct.storage.borrow\u003c\u0026LockedTokens.TokenHolder\u003e(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026FlowToken.Vault\u003e(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: \u003c-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b61" + }, + { + "id": "SCO.01", + "name": "Setup Staking Collection", + "source": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) \u0026Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue\u003cauth(FungibleToken.Withdraw, LockedTokens.TokenOperations) \u0026LockedTokens.TokenHolder\u003e(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue\u003cauth(FungibleToken.Withdraw) \u0026FlowToken.Vault\u003e(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n \u003c- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n \u003c- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue\u003c\u0026FlowStakingCollection.StakingCollection\u003e(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow\u003c\u0026FlowIDTableStaking.NodeStaker\u003e(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node \u003c- signer.storage.load\u003c@FlowIDTableStaking.NodeStaker\u003e(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(\u003c-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow\u003c\u0026FlowIDTableStaking.NodeDelegator\u003e(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator \u003c- signer.storage.load\u003c@FlowIDTableStaking.NodeDelegator\u003e(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(\u003c-delegator)\n }\n }\n}\n", + "arguments": [], + "network": "mainnet", + "hash": "69f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d9" + }, + { + "id": "SCO.02", + "name": "Register Delegator", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "id", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "0a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c47300448744" + }, + { + "id": "SCO.03", + "name": "Register Node", + "source": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "id", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "role", + "label": "Node Role", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "String", + "name": "networkingAddress", + "label": "Networking Address", + "sampleValues": [ + { + "value": "flow-node.test:3569", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "networkingKey", + "label": "Networking Key", + "sampleValues": [ + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "stakingKey", + "label": "Staking Key", + "sampleValues": [ + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + }, + { + "type": "String", + "name": "machineAccountKey", + "label": "Machine Account Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeySignatureAlgorithm", + "label": "Raw Value for Machine Account Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeyHashAlgorithm", + "label": "Raw Value for Machine Account Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + } + ], + "network": "mainnet", + "hash": "3b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df5267" + }, + { + "id": "SCO.04", + "name": "Create Machine Account", + "source": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "id", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "machineAccountKey", + "label": "Machine Account Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeySignatureAlgorithm", + "label": "Raw Value for Machine Account Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeyHashAlgorithm", + "label": "Raw Value for Machine Account Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + } + ], + "network": "mainnet", + "hash": "f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01" + }, + { + "id": "SCO.05", + "name": "Request Unstaking", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "id": "SCO.06", + "name": "Stake New Tokens", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "id": "SCO.07", + "name": "Stake Rewarded Tokens", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "id": "SCO.08", + "name": "Stake Unstaked Tokens", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "id": "SCO.09", + "name": "Unstake All", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510" + }, + { + "id": "SCO.10", + "name": "Withdraw Rewarded Tokens", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": null, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "id": "SCO.11", + "name": "Withdraw Unstaked Tokens", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "id": "SCO.12", + "name": "Close Stake", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": null, + "type": "Optional" + } + ] + } + ], + "network": "mainnet", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "id": "SCO.13", + "name": "Transfer Node", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker \u003c- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(\u003c- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "Address", + "name": "address", + "label": "Address", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + } + ], + "network": "mainnet", + "hash": "3578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c56279" + }, + { + "id": "SCO.14", + "name": "Transfer Delegator", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator \u003c- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(\u003c- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": "42", + "type": "UInt32" + } + ] + }, + { + "type": "Address", + "name": "address", + "label": "Address", + "sampleValues": [ + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ] + } + ], + "network": "mainnet", + "hash": "8c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc" + }, + { + "id": "SCO.15", + "name": "Withdraw From Machine Account", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "mainnet", + "hash": "e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c0369034" + }, + { + "id": "SCO.16", + "name": "Update Networking Address", + "source": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "address", + "label": "Address", + "sampleValues": [ + { + "value": "flow-node.test:3569", + "type": "String" + } + ] + } + ], + "network": "mainnet", + "hash": "68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d" + } + ] +} \ No newline at end of file diff --git a/transaction_metadata/manifest.testnet.json b/transaction_metadata/manifest.testnet.json new file mode 100644 index 00000000..40b0cd11 --- /dev/null +++ b/transaction_metadata/manifest.testnet.json @@ -0,0 +1,1132 @@ +{ + "network": "testnet", + "templates": [ + { + "id": "FA.01", + "name": "Create Account", + "source": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) \u0026Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm \u003e= 1 \u0026\u0026 signatureAlgorithm \u003c= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm \u003e= 1 \u0026\u0026 hashAlgorithm \u003c= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight \u003c= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "name": "key", + "label": "Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "signatureAlgorithm", + "label": "Raw Value for Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "hashAlgorithm", + "label": "Raw Value for Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UFix64", + "name": "weight", + "label": "Key Weight", + "sampleValues": [ + { + "value": "1000.00000000", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "id": "FA.02", + "name": "Add Key", + "source": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) \u0026Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm \u003e= 1 \u0026\u0026 signatureAlgorithm \u003c= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm \u003e= 1 \u0026\u0026 hashAlgorithm \u003c= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight \u003c= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "name": "key", + "label": "Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "signatureAlgorithm", + "label": "Raw Value for Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "hashAlgorithm", + "label": "Raw Value for Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UFix64", + "name": "weight", + "label": "Key Weight", + "sampleValues": [ + { + "value": "1000.00000000", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "id": "FA.03", + "name": "Remove Key", + "source": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) \u0026Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "name": "keyIndex", + "label": "Key Index", + "sampleValues": [ + { + "value": "1", + "type": "Int" + } + ] + } + ], + "network": "testnet", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "id": "FT.01", + "name": "Setup Fungible Token Vault", + "source": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) \u0026Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{FungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cFungibleTokenMetadataViews.FTVaultData\u003e()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault \u003c-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(\u003c-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue\u003c\u0026{FungibleToken.Vault}\u003e(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue\u003c\u0026{FungibleToken.Receiver}\u003e(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "name": "contractAddress", + "label": "FT Contract Address", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "FT Contract Name", + "sampleValues": [ + { + "value": "FiatToken", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "3ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa28" + }, + { + "id": "FT.02", + "name": "Transfer Fungible Token with Paths", + "source": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026{FungibleToken.Provider}\u003e(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault \u003c- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{FungibleToken.Receiver}\u003e(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: \u003c-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + }, + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "senderPathIdentifier", + "label": "Sender's Collection Path Identifier", + "sampleValues": [ + { + "value": "flowTokenVault", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "receiverPathIdentifier", + "label": "Recipient's Receiver Path Identifier", + "sampleValues": [ + { + "value": "flowTokenReceiver", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b607142988" + }, + { + "id": "FT.03", + "name": "Transfer Fungible Token with Address", + "source": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{FungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cFungibleTokenMetadataViews.FTVaultData\u003e()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026{FungibleToken.Provider}\u003e(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault \u003c- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{FungibleToken.Receiver}\u003e(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: \u003c-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + }, + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "Address", + "name": "contractAddress", + "label": "FT Contract Address", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "FT Contract Name", + "sampleValues": [ + { + "value": "FiatToken", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "0adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2" + }, + { + "id": "NFT.01", + "name": "Setup NFT Collection", + "source": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) \u0026Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{NonFungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cMetadataViews.NFTCollectionData\u003e()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection \u003c- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(\u003c-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue\u003c\u0026{NonFungibleToken.Collection}\u003e(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "name": "contractAddress", + "label": "NFT Contract Address", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "NFT Contract Name", + "sampleValues": [ + { + "value": "TopShot", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "54fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333" + }, + { + "id": "NFT.02", + "name": "Transfer NFT with Paths", + "source": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow\u003cauth(NonFungibleToken.Withdraw) \u0026{NonFungibleToken.Collection}\u003e(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT \u003c- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{NonFungibleToken.Receiver}\u003e(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: \u003c-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "UInt64", + "name": "id", + "label": "NFT ID to Transfer", + "sampleValues": [ + { + "value": "10", + "type": "UInt64" + } + ] + }, + { + "type": "String", + "name": "senderPathIdentifier", + "label": "Sender's Collection Path Identifier", + "sampleValues": [ + { + "value": "flowTokenVault", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "receiverPathIdentifier", + "label": "Recipient's Receiver Path Identifier", + "sampleValues": [ + { + "value": "flowTokenReceiver", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d" + }, + { + "id": "NFT.03", + "name": "Transfer NFT with Address", + "source": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) \u0026Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow\u003c\u0026{NonFungibleToken}\u003e(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type\u003cMetadataViews.NFTCollectionData\u003e()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow\u003cauth(NonFungibleToken.Withdraw) \u0026{NonFungibleToken.Collection}\u003e(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT \u003c- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow\u003c\u0026{NonFungibleToken.Receiver}\u003e(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: \u003c-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "name": "to", + "label": "Recipient", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "UInt64", + "name": "id", + "label": "NFT ID to Transfer", + "sampleValues": [ + { + "value": "10", + "type": "UInt64" + } + ] + }, + { + "type": "Address", + "name": "contractAddress", + "label": "NFT Contract Address", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + }, + { + "type": "String", + "name": "contractName", + "label": "NFT Contract Name", + "sampleValues": [ + { + "value": "TopShot", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b" + }, + { + "id": "TH.01", + "name": "Withdraw Unlocked FLOW", + "source": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) \u0026LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) \u0026FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) \u0026Account) {\n self.holderRef = acct.storage.borrow\u003cauth(LockedTokens.TokenOperations, FungibleToken.Withdraw) \u0026LockedTokens.TokenHolder\u003e(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026FlowToken.Vault\u003e(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: \u003c-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b1" + }, + { + "id": "TH.02", + "name": "Deposit Unlocked FLOW", + "source": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: \u0026LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) \u0026FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) \u0026Account) {\n self.holderRef = acct.storage.borrow\u003c\u0026LockedTokens.TokenHolder\u003e(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow\u003cauth(FungibleToken.Withdraw) \u0026FlowToken.Vault\u003e(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: \u003c-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "17ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253" + }, + { + "id": "SCO.01", + "name": "Setup Staking Collection", + "source": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) \u0026Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue\u003cauth(FungibleToken.Withdraw, LockedTokens.TokenOperations) \u0026LockedTokens.TokenHolder\u003e(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue\u003cauth(FungibleToken.Withdraw) \u0026FlowToken.Vault\u003e(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n \u003c- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n \u003c- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue\u003c\u0026FlowStakingCollection.StakingCollection\u003e(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow\u003c\u0026FlowIDTableStaking.NodeStaker\u003e(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node \u003c- signer.storage.load\u003c@FlowIDTableStaking.NodeStaker\u003e(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(\u003c-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow\u003c\u0026FlowIDTableStaking.NodeDelegator\u003e(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator \u003c- signer.storage.load\u003c@FlowIDTableStaking.NodeDelegator\u003e(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(\u003c-delegator)\n }\n }\n}\n", + "arguments": [], + "network": "testnet", + "hash": "861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b1814" + }, + { + "id": "SCO.02", + "name": "Register Delegator", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "id", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f9483" + }, + { + "id": "SCO.03", + "name": "Register Node", + "source": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "id", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "role", + "label": "Node Role", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "String", + "name": "networkingAddress", + "label": "Networking Address", + "sampleValues": [ + { + "value": "flow-node.test:3569", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "networkingKey", + "label": "Networking Key", + "sampleValues": [ + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "stakingKey", + "label": "Staking Key", + "sampleValues": [ + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + }, + { + "type": "String", + "name": "machineAccountKey", + "label": "Machine Account Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeySignatureAlgorithm", + "label": "Raw Value for Machine Account Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeyHashAlgorithm", + "label": "Raw Value for Machine Account Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + } + ], + "network": "testnet", + "hash": "deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb82800921" + }, + { + "id": "SCO.04", + "name": "Create Machine Account", + "source": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "id", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "machineAccountKey", + "label": "Machine Account Public Key", + "sampleValues": [ + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeySignatureAlgorithm", + "label": "Raw Value for Machine Account Signature Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + }, + { + "type": "UInt8", + "name": "machineAccountKeyHashAlgorithm", + "label": "Raw Value for Machine Account Hash Algorithm Enum", + "sampleValues": [ + { + "value": "1", + "type": "UInt8" + } + ] + } + ], + "network": "testnet", + "hash": "4c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4" + }, + { + "id": "SCO.05", + "name": "Request Unstaking", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "id": "SCO.06", + "name": "Stake New Tokens", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "id": "SCO.07", + "name": "Stake Rewarded Tokens", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "id": "SCO.08", + "name": "Stake Unstaked Tokens", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "id": "SCO.09", + "name": "Unstake All", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae" + }, + { + "id": "SCO.10", + "name": "Withdraw Rewarded Tokens", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": null, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "id": "SCO.11", + "name": "Withdraw Unstaked Tokens", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": null, + "type": "Optional" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "id": "SCO.12", + "name": "Close Stake", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32?", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": null, + "type": "Optional" + } + ] + } + ], + "network": "testnet", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "id": "SCO.13", + "name": "Transfer Node", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker \u003c- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(\u003c- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "Address", + "name": "address", + "label": "Address", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + } + ], + "network": "testnet", + "hash": "a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee87" + }, + { + "id": "SCO.14", + "name": "Transfer Delegator", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow\u003c\u0026FlowStakingCollection.StakingCollection\u003e(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator \u003c- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(\u003c- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UInt32", + "name": "delegatorID", + "label": "Delegator ID", + "sampleValues": [ + { + "value": "42", + "type": "UInt32" + } + ] + }, + { + "type": "Address", + "name": "address", + "label": "Address", + "sampleValues": [ + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ] + } + ], + "network": "testnet", + "hash": "135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e075468913" + }, + { + "id": "SCO.15", + "name": "Withdraw From Machine Account", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "UFix64", + "name": "amount", + "label": "Amount", + "sampleValues": [ + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ] + } + ], + "network": "testnet", + "hash": "fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8" + }, + { + "id": "SCO.16", + "name": "Update Networking Address", + "source": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) \u0026Account) {\n self.stakingCollectionRef = account.storage.borrow\u003cauth(FlowStakingCollection.CollectionOwner) \u0026FlowStakingCollection.StakingCollection\u003e(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "name": "nodeID", + "label": "Node ID", + "sampleValues": [ + { + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6", + "type": "String" + } + ] + }, + { + "type": "String", + "name": "address", + "label": "Address", + "sampleValues": [ + { + "value": "flow-node.test:3569", + "type": "String" + } + ] + } + ], + "network": "testnet", + "hash": "3a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f" + } + ] +} \ No newline at end of file diff --git a/transaction_metadata/tests/index.js b/transaction_metadata/tests/index.js new file mode 100644 index 00000000..1cca7397 --- /dev/null +++ b/transaction_metadata/tests/index.js @@ -0,0 +1,256 @@ +import merge from "deepmerge"; +import rlp from "rlp"; +import fs from "fs"; +import path from "path"; +import { encodeTransactionPayload, encodeTransactionEnvelope } from "@onflow/encode"; +import {merkleIndex, merkleTree} from "../txMerkleTree.mjs"; +import jsSHA from "jssha"; + +const TESTNET = "Testnet"; +const MAINNET = "Mainnet"; + +const ADDRESS_TESTNET = "99a8ac2c71d4f6bd"; +const ADDRESS_MAINNET = "f19c161bc24cf4b4"; + +const ADDRESSES = { + [TESTNET]: ADDRESS_TESTNET, + [MAINNET]: ADDRESS_MAINNET, +}; + +const encodeAccountKey = (publicKey, sigAlgo, hashAlgo, weight) => + rlp + .encode([ + Buffer.from(publicKey, "hex"), + sigAlgo, + hashAlgo, + weight, + ]) + .toString("hex") + +const range = (start, end) => Array.from({length: end - start}, (v,k) => start + k); + +const PUBLIC_KEY = "94488a795a07700c6fb83e066cf57dfd87f92ce70cbc81cb3bd3fea2df7b67073b70e36b44f3578b43d64d3faa2e8e415ef6c2b5fe4390d5a78e238581c6e4bc"; + +const SIG_ALGO_UNKNOWN = 0; +const SIG_ALGO_ECDSA_P256 = 2; +const SIG_ALGO_ECDSA_SECP256K1 = 3; +const SIG_ALGO_MAX = 255; + +const SIG_ALGOS = [ + SIG_ALGO_UNKNOWN, + SIG_ALGO_ECDSA_P256, + SIG_ALGO_ECDSA_SECP256K1, + SIG_ALGO_MAX, +]; + +const HASH_ALGO_UNKNOWN = 0; +const HASH_ALGO_SHA2_256 = 1; +const HASH_ALGO_SHA3_256 = 3; +const HASH_ALGO_MAX = 255; + +const HASH_ALGOS = [ + HASH_ALGO_UNKNOWN, + HASH_ALGO_SHA2_256, + HASH_ALGO_SHA3_256, + HASH_ALGO_MAX, +]; + +const WEIGHT_MIN = 0; +const WEIGHT_MID = 500; +const WEIGHT_MAX = 1000; + +const WEIGHTS = [WEIGHT_MIN, WEIGHT_MID, WEIGHT_MAX]; + +const DEFAULT_ACCOUNT_KEY = encodeAccountKey(PUBLIC_KEY, SIG_ALGO_ECDSA_P256, HASH_ALGO_SHA3_256, WEIGHT_MAX); + +const calculateHash = (msg) => { + const shaObj = new jsSHA("SHA-256", "BYTES"); + shaObj.update(msg); + return shaObj.getHash("HEX"); +} + +const getMerkleTreeElement = (idx) => merkleTree.children[idx[0]].children[idx[1]].children[idx[2]].children[idx[3]].children[0] + +const combineMerge = (target, source, options) => { + // empty list always overwrites target + if (source.length == 0) return source + + const destination = target.slice() + + source.forEach((item, index) => { + if (typeof destination[index] === "undefined") { + destination[index] = options.cloneUnlessOtherwiseSpecified(item, options) + } else if (options.isMergeableObject(item)) { + destination[index] = merge(target[index], item, options) + } else if (target.indexOf(item) === -1) { + destination.push(item) + } + }) + + return destination +}; + +const buildPayloadTx = (network, partialTx) => + merge(basePayloadTx(network), partialTx, {arrayMerge: combineMerge}); + +const buildEnvelopeTx = (network, partialTx) => + merge(baseEnvelopeTx(network), partialTx, {arrayMerge: combineMerge}); + +const basePayloadTx = (network) => { + const address = ADDRESSES[network]; + + return { + script: "", + arguments: [{ type: "String", value: DEFAULT_ACCOUNT_KEY }], + refBlock: "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + gasLimit: 42, + proposalKey: { + address: address, + keyId: 4, + sequenceNum: 10, + }, + payer: address, + authorizers: [address], + }; +}; + +const baseEnvelopeTx = (network) => { + const address = ADDRESSES[network]; + + return { + ...basePayloadTx(network), + payloadSigs: [ + { + address: address, + keyId: 4, + sig: "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162", + }, + ], + }; +}; + +const createPayloadTestcase = (valid) => { + return (x) => ({ + title: x[0], + valid: valid, + chainID: x[2], + payloadMessage: x[1], + envelopeMessage: { ...x[1], payloadSigs: [] }, + encodedTransactionPayloadHex: encodeTransactionPayload(x[1]), + encodedTransactionEnvelopeHex: encodeTransactionEnvelope({ ...x[1], payloadSigs: [] }), + metadata: getMerkleTreeElement(merkleIndex[x[3].substring(0, 16)]), + hash: x[3], + }); +}; + +const createEnvelopeTestcase = (valid) => { + return (x) => ({ + title: x[0], + valid: valid, + chainID: x[2], + payloadMessage: x[1], + envelopeMessage: { ...x[1], payloadSigs: [] }, + encodedTransactionPayloadHex: encodeTransactionPayload(x[1]), + encodedTransactionEnvelopeHex: encodeTransactionEnvelope({ ...x[1], payloadSigs: [] }), + metadata: getMerkleTreeElement(merkleIndex[x[3].substring(0, 16)]), + hash: x[3], + }); +}; + +const sampleArguments = (transactionArguments, sampleValuesCombination) => { + return transactionArguments.map(({ type, sampleValues }, i) => { + return sampleValues[sampleValuesCombination[i]]; + }); +}; + +const numberOfRequiredTests = (args) => { + return Math.max(1, ...args.map(({ type, sampleValues }) => sampleValues.length)); +}; + +// Instead of taking all sampleValues combinations we just take (0, 0, ...), (1, 1, ..), ... . +// Last sampleValue is used if sampleValuesIdx is too high. +const selectArgumentCombinations = (transactionArguments) => { + const maxSv = numberOfRequiredTests(transactionArguments); + return range(0, maxSv).map((sampleValuesIdx) => + range(0, transactionArguments.length).map((i) => + Math.min(sampleValuesIdx, transactionArguments[i].sampleValues.length-1) + ) + ); +} + +const testnetTemplates = JSON.parse(fs.readFileSync('../manifest.testnet.json')).templates; +const mainnetTemplates = JSON.parse(fs.readFileSync('../manifest.mainnet.json')).templates; + + +const manifestTestnetPayloadCases = testnetTemplates.flatMap((template) => { + const combinations = selectArgumentCombinations(template.arguments); + return combinations.map((combination, i) => [ + (combinations.length==1)?`${template.id} - ${template.name}`: + `${template.id} - ${template.name} - ${i+1}`, + buildPayloadTx(TESTNET, { + script: template.source, + arguments: sampleArguments(template.arguments || [], combination), + }), + TESTNET, + calculateHash(template.source), + ]) +}); + +const manifestMainnetPayloadCases = mainnetTemplates.flatMap((template) => { + const combinations = selectArgumentCombinations(template.arguments); + return combinations.map((combination, i) => [ + (combinations.length==1)?`${template.id} - ${template.name}`: + `${template.id} - ${template.name} - ${i+1}`, + buildPayloadTx(MAINNET, { + script: template.source, + arguments: sampleArguments(template.arguments || [], combination), + }), + MAINNET, + calculateHash(template.source), + ]) +}); + +const manifestTestnetEnvelopeCases = testnetTemplates.flatMap((template) => { + const combinations = selectArgumentCombinations(template.arguments); + return combinations.map((combination, i) => [ + (combinations.length==1)?`${template.id} - ${template.name}`: + `${template.id} - ${template.name} - ${i+1}`, + buildEnvelopeTx(TESTNET, { + script: template.source, + arguments: sampleArguments(template.arguments || [], combination), + }), + TESTNET, + calculateHash(template.source), + ]) +}); + +const manifestMainnetEnvelopeCases = mainnetTemplates.flatMap((template) => { + const combinations = selectArgumentCombinations(template.arguments); + return combinations.map((combination, i) => [ + (combinations.length==1)?`${template.id} - ${template.name}`: + `${template.id} - ${template.name} - ${i+1}`, + buildEnvelopeTx(MAINNET, { + script: template.source, + arguments: sampleArguments(template.arguments || [], combination), + }), + MAINNET, + calculateHash(template.source), + ]) +}); + +const manifestPayloadCases = [ + ...manifestTestnetPayloadCases, + ...manifestMainnetPayloadCases, +].map(createPayloadTestcase(true)); + +const manifestEnvelopeCases = [ + ...manifestTestnetEnvelopeCases, + ...manifestMainnetEnvelopeCases, +].map(createEnvelopeTestcase(true)); + + +const args = process.argv.slice(2); +const outDir = args[0]; + +fs.writeFileSync(path.join(outDir, "manifestEnvelopeCases.json"), JSON.stringify(manifestEnvelopeCases, null, 2)); +fs.writeFileSync(path.join(outDir, "manifestPayloadCases.json"), JSON.stringify(manifestPayloadCases, null, 2)); diff --git a/transaction_metadata/tests/package.json b/transaction_metadata/tests/package.json new file mode 100644 index 00000000..60bc8acb --- /dev/null +++ b/transaction_metadata/tests/package.json @@ -0,0 +1,16 @@ +{ + "name": "generate-transaction-tests", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "type": "module", + "scripts": { + "generate": "node ./index.js ../testvectors" + }, + "dependencies": { + "@onflow/encode": "^0.0.8", + "deepmerge": "^4.2.2", + "jssha": "^3.2.0", + "rlp": "^2.2.6" + } +} diff --git a/transaction_metadata/testvectors/manifestEnvelopeCases.json b/transaction_metadata/testvectors/manifestEnvelopeCases.json new file mode 100644 index 00000000..aa051e73 --- /dev/null +++ b/transaction_metadata/testvectors/manifestEnvelopeCases.json @@ -0,0 +1,4950 @@ +[ + { + "title": "FA.01 - Create Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9045af90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "title": "FA.02 - Add Key", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90423f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "title": "FA.03 - Remove Key", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9016af90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "title": "FT.01 - Setup Fungible Token Vault", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9080cf90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001", + "hash": "3ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa28" + }, + { + "title": "FT.02 - Transfer Fungible Token with Paths", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f907a7f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b607142988" + }, + { + "title": "FT.03 - Transfer Fungible Token with Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90944f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003", + "hash": "0adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2" + }, + { + "title": "NFT.01 - Setup NFT Collection", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90702f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001", + "hash": "54fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333" + }, + { + "title": "NFT.02 - Transfer NFT with Paths", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f907f0f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d" + }, + { + "title": "NFT.03 - Transfer NFT with Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90925f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003", + "hash": "e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b" + }, + { + "title": "TH.01 - Withdraw Unlocked FLOW", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90423f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b1" + }, + { + "title": "TH.02 - Deposit Unlocked FLOW", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f903adf903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "17ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253" + }, + { + "title": "SCO.01 - Setup Staking Collection", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078396563613262333862313862356466650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90df5f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078396563613262333862313862356466650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000", + "hash": "861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b1814" + }, + { + "title": "SCO.02 - Register Delegator", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9040af90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f9483" + }, + { + "title": "SCO.03 - Register Node", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90b28f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008", + "hash": "deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb82800921" + }, + { + "title": "SCO.04 - Create Machine Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9082ff9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003", + "hash": "4c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4" + }, + { + "title": "SCO.05 - Request Unstaking - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90434f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "title": "SCO.05 - Request Unstaking - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9044ff9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "title": "SCO.06 - Stake New Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904b0f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "title": "SCO.06 - Stake New Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904cbf904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "title": "SCO.09 - Unstake All", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90398f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000", + "hash": "c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90501f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904e6f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904f5f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90510f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "title": "SCO.12 - Close Stake - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90468f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "title": "SCO.12 - Close Stake - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9044df90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "title": "SCO.13 - Transfer Node", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90971f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003", + "hash": "a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee87" + }, + { + "title": "SCO.14 - Transfer Delegator", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9091ef9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003", + "hash": "135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e075468913" + }, + { + "title": "SCO.15 - Withdraw From Machine Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90419f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8" + }, + { + "title": "SCO.16 - Update Networking Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [ + { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f903daf903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001", + "hash": "3a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f" + }, + { + "title": "FA.01 - Create Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9045af90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "title": "FA.02 - Add Key", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90423f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "title": "FA.03 - Remove Key", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9016af90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "title": "FT.01 - Setup Fungible Token Vault", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9080cf90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001", + "hash": "0246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b" + }, + { + "title": "FT.02 - Transfer Fungible Token with Paths", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f907a7f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "6e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e" + }, + { + "title": "FT.03 - Transfer Fungible Token with Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90944f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003", + "hash": "d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e600" + }, + { + "title": "NFT.01 - Setup NFT Collection", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90702f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001", + "hash": "a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e76611" + }, + { + "title": "NFT.02 - Transfer NFT with Paths", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f907f0f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd1365" + }, + { + "title": "NFT.03 - Transfer NFT with Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90925f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003", + "hash": "91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb5" + }, + { + "title": "TH.01 - Withdraw Unlocked FLOW", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90423f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "4a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9" + }, + { + "title": "TH.02 - Deposit Unlocked FLOW", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f903adf903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b61" + }, + { + "title": "SCO.01 - Setup Staking Collection", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90df5f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000", + "hash": "69f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d9" + }, + { + "title": "SCO.02 - Register Delegator", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9040af90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "0a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c47300448744" + }, + { + "title": "SCO.03 - Register Node", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90b28f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008", + "hash": "3b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df5267" + }, + { + "title": "SCO.04 - Create Machine Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9082ff9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003", + "hash": "f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01" + }, + { + "title": "SCO.05 - Request Unstaking - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90434f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "title": "SCO.05 - Request Unstaking - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9044ff9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "title": "SCO.06 - Stake New Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904b0f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "title": "SCO.06 - Stake New Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904cbf904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "title": "SCO.09 - Unstake All", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90398f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000", + "hash": "1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90501f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904e6f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904f5f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90510f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "title": "SCO.12 - Close Stake - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90468f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "title": "SCO.12 - Close Stake - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9044df90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "title": "SCO.13 - Transfer Node", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90971f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003", + "hash": "3578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c56279" + }, + { + "title": "SCO.14 - Transfer Delegator", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9091ef9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003", + "hash": "8c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc" + }, + { + "title": "SCO.15 - Withdraw From Machine Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90419f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c0369034" + }, + { + "title": "SCO.16 - Update Networking Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [ + { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sig": "f7225388c1d69d57e6251c9fda50cbbf9e05131e5adb81e5aa0422402f048162" + } + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f903daf903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001", + "hash": "68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d" + } +] \ No newline at end of file diff --git a/transaction_metadata/testvectors/manifestPayloadCases.json b/transaction_metadata/testvectors/manifestPayloadCases.json new file mode 100644 index 00000000..e13e48bd --- /dev/null +++ b/transaction_metadata/testvectors/manifestPayloadCases.json @@ -0,0 +1,4474 @@ +[ + { + "title": "FA.01 - Create Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9045af90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "title": "FA.02 - Add Key", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90423f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "title": "FA.03 - Remove Key", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9016af90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "title": "FT.01 - Setup Fungible Token Vault", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9080cf90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001", + "hash": "3ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa28" + }, + { + "title": "FT.02 - Transfer Fungible Token with Paths", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f907a7f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b607142988" + }, + { + "title": "FT.03 - Transfer Fungible Token with Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FungibleTokenMetadataViews from 0x9a0766d93b6608b7\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90944f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078396130373636643933623636303862370a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003", + "hash": "0adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2" + }, + { + "title": "NFT.01 - Setup NFT Collection", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90702f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001", + "hash": "54fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333" + }, + { + "title": "NFT.02 - Transfer NFT with Paths", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f907f0f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d" + }, + { + "title": "NFT.03 - Transfer NFT with Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x631e88ae7f1d7c20\nimport MetadataViews from 0x631e88ae7f1d7c20\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0x8c5303eaa26202d6" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90925f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078363331653838616537663164376332300a696d706f7274204d6574616461746156696577732066726f6d203078363331653838616537663164376332300a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307838633533303365616132363230326436227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003", + "hash": "e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b" + }, + { + "title": "TH.01 - Withdraw Unlocked FLOW", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90423f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b1" + }, + { + "title": "TH.02 - Deposit Unlocked FLOW", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport LockedTokens from 0x95e019a17d0e23d7\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f903adf903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "17ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253" + }, + { + "title": "SCO.01 - Setup Staking Collection", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0x9a0766d93b6608b7\nimport FlowToken from 0x7e60df042a9c0868\nimport FlowIDTableStaking from 0x9eca2b38b18b5dfe\nimport LockedTokens from 0x95e019a17d0e23d7\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078396563613262333862313862356466650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90df5f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078396130373636643933623636303862370a696d706f727420466c6f77546f6b656e2066726f6d203078376536306466303432613963303836380a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078396563613262333862313862356466650a696d706f7274204c6f636b6564546f6b656e732066726f6d203078393565303139613137643065323364370a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000", + "hash": "861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b1814" + }, + { + "title": "SCO.02 - Register Delegator", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9040af90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f9483" + }, + { + "title": "SCO.03 - Register Node", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90b28f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008", + "hash": "deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb82800921" + }, + { + "title": "SCO.04 - Create Machine Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9082ff9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003", + "hash": "4c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4" + }, + { + "title": "SCO.05 - Request Unstaking - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90434f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "title": "SCO.05 - Request Unstaking - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9044ff9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "2d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99" + }, + { + "title": "SCO.06 - Stake New Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904b0f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "title": "SCO.06 - Stake New Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904cbf904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00b" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "0b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8" + }, + { + "title": "SCO.09 - Unstake All", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90398f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000", + "hash": "c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90501f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904e6f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "5a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f904f5f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90510f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "01fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442e" + }, + { + "title": "SCO.12 - Close Stake - 1", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90468f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "title": "SCO.12 - Close Stake - 2", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9044df90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "7e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185" + }, + { + "title": "SCO.13 - Transfer Node", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90971f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003", + "hash": "a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee87" + }, + { + "title": "SCO.14 - Transfer Delegator", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0x8c5303eaa26202d6", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f9091ef9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307838633533303365616132363230326436222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003", + "hash": "135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e075468913" + }, + { + "title": "SCO.15 - Withdraw From Machine Account", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f90419f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8" + }, + { + "title": "SCO.16 - Update Networking Address", + "valid": true, + "chainID": "Testnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x95e019a17d0e23d7\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "99a8ac2c71d4f6bd", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "99a8ac2c71d4f6bd", + "authorizers": [ + "99a8ac2c71d4f6bd" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bd", + "encodedTransactionEnvelopeHex": "f903daf903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078393565303139613137643065323364370a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a8899a8ac2c71d4f6bd040a8899a8ac2c71d4f6bdc98899a8ac2c71d4f6bdc0", + "metadata": "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001", + "hash": "3a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f" + }, + { + "title": "FA.01 - Create Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\tprepare(signer: auth(BorrowValue, Storage) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tlet account = Account(payer: signer)\n\n\t\taccount.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9045af90456b90300696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0970726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09096c6574206163636f756e74203d204163636f756e742870617965723a207369676e6572290a0a09096163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443cc4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c437265617465204163636f756e740004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "c4a7efd8708396e8c7a3611f72a9f89f675bf6d5c9336dd389e5839cba78443c" + }, + { + "title": "FA.02 - Add Key", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\n\ntransaction(key: String, signatureAlgorithm: UInt8, hashAlgorithm: UInt8, weight: UFix64) {\n\n\tprepare(signer: auth(AddKey) &Account) {\n\t\tpre {\n\t\t\tsignatureAlgorithm >= 1 && signatureAlgorithm <= 3: \"Must provide a signature algorithm raw value that is 1, 2, or 3\"\n\t\t\thashAlgorithm >= 1 && hashAlgorithm <= 6: \"Must provide a hash algorithm raw value that is between 1 and 6\"\n\t\t\tweight <= 1000.0: \"The key weight must be between 0 and 1000\"\n\t\t}\n\t\tlet publicKey = PublicKey(\n\t\t\tpublicKey: key.decodeHex(),\n\t\t\tsignatureAlgorithm: SignatureAlgorithm(rawValue: signatureAlgorithm)!\n\t\t)\n\n\t\tsigner.keys.add(publicKey: publicKey, hashAlgorithm: HashAlgorithm(rawValue: hashAlgorithm)!, weight: weight)\n\t}\n}", + "arguments": [ + { + "type": "String", + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1000.00000000", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90423f9041fb902c9696d706f72742043727970746f0a0a7472616e73616374696f6e286b65793a20537472696e672c207369676e6174757265416c676f726974686d3a2055496e74382c2068617368416c676f726974686d3a2055496e74382c207765696768743a2055466978363429207b0a0a0970726570617265287369676e65723a2061757468284164644b65792920264163636f756e7429207b0a0909707265207b0a0909097369676e6174757265416c676f726974686d203e3d2031202626207369676e6174757265416c676f726974686d203c3d20333a20224d7573742070726f766964652061207369676e617475726520616c676f726974686d207261772076616c7565207468617420697320312c20322c206f722033220a09090968617368416c676f726974686d203e3d20312026262068617368416c676f726974686d203c3d20363a20224d7573742070726f766964652061206861736820616c676f726974686d207261772076616c75652074686174206973206265747765656e203120616e642036220a090909776569676874203c3d20313030302e303a2022546865206b657920776569676874206d757374206265206265747765656e203020616e642031303030220a09097d0a09096c6574207075626c69634b6579203d205075626c69634b6579280a0909097075626c69634b65793a206b65792e6465636f646548657828292c0a0909097369676e6174757265416c676f726974686d3a205369676e6174757265416c676f726974686d2872617756616c75653a207369676e6174757265416c676f726974686d29210a0909290a0a09097369676e65722e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2048617368416c676f726974686d2872617756616c75653a2068617368416c676f726974686d29212c207765696768743a20776569676874290a097d0a7df90110b8aa7b2274797065223a22537472696e67222c2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da97b2276616c7565223a22313030302e3030303030303030222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "021c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f416464204b65790004045075626c6963204b65790000065369676e617475726520416c672e0001054861736820416c672e0002014b65792057656967687400035546697836340003", + "hash": "1c9d1210f2bf129b86803b153e137420c9117e8a2409a1e2ef6f916a4e8d611f" + }, + { + "title": "FA.03 - Remove Key", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "transaction(keyIndex: Int) {\n\tprepare(signer: auth(RevokeKey) &Account) {\n\t\tif let key = signer.keys.get(keyIndex: keyIndex) {\n\t\t\tsigner.keys.revoke(keyIndex: keyIndex)\n\t\t} else {\n\t\t\tpanic(\"No key with the given index exists on the authorizer's account\")\n\t\t}\n\t}\n}", + "arguments": [ + { + "type": "Int", + "value": "1" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9016af90166b901077472616e73616374696f6e286b6579496e6465783a20496e7429207b0a0970726570617265287369676e65723a2061757468285265766f6b654b65792920264163636f756e7429207b0a09096966206c6574206b6579203d207369676e65722e6b6579732e676574286b6579496e6465783a206b6579496e64657829207b0a0909097369676e65722e6b6579732e7265766f6b65286b6579496e6465783a206b6579496e646578290a09097d20656c7365207b0a09090970616e696328224e6f206b657920776974682074686520676976656e20696e64657820657869737473206f6e2074686520617574686f72697a65722773206163636f756e7422290a09097d0a097d0a7ddb9a7b2274797065223a22496e74222c2276616c7565223a2231227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "026c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd5156c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd51552656d6f7665204b65790001014b657920496e6465780000496e740003", + "hash": "6c7ab72837fdce77a910f6fc0c622c6c4d5b17f6fbf7295f345d50d3508dd515" + }, + { + "title": "FT.01 - Setup Fungible Token Vault", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// This transaction is what an account would run\n/// to set itself up to manage fungible tokens. This function\n/// uses views to know where to set up the vault\n/// in storage and to create the empty vault.\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(SaveValue, Capabilities) &Account) {\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n let ftVaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Create a new empty vault using the createEmptyVault function inside the FTVaultData\n let emptyVault <-ftVaultData.createEmptyVault()\n\n // Save it to the account\n signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)\n \n // Create a public capability for the vault which includes the .Resolver interface\n let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)\n signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)\n\n // Create a public capability for the vault exposing the receiver interface\n let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(ftVaultData.storagePath)\n signer.capabilities.publish(receiverCap, at: ftVaultData.receiverPath)\n\n }\n}\n ", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9080cf90808b9076d696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f206d616e6167652066756e6769626c6520746f6b656e732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f2073657420757020746865207661756c740a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d707479207661756c742e0a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a2061757468285361766556616c75652c204361706162696c69746965732920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a20202020202020206c65742066745661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d707479207661756c74207573696e672074686520637265617465456d7074795661756c742066756e6374696f6e20696e73696465207468652046545661756c74446174610a20202020202020206c657420656d7074795661756c74203c2d66745661756c74446174612e637265617465456d7074795661756c7428290a0a20202020202020202f2f205361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d7074795661756c742c20746f3a2066745661756c74446174612e73746f7261676550617468290a20202020202020200a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c7420776869636820696e636c7564657320746865202e5265736f6c76657220696e746572666163650a20202020202020206c6574207661756c74436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e5661756c747d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c697368287661756c744361702c2061743a2066745661756c74446174612e6d6574616461746150617468290a0a20202020202020202f2f204372656174652061207075626c6963206361706162696c69747920666f7220746865207661756c74206578706f73696e672074686520726563656976657220696e746572666163650a20202020202020206c6574207265636569766572436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b46756e6769626c65546f6b656e2e52656365697665727d3e2866745661756c74446174612e73746f7261676550617468290a20202020202020207369676e65722e6361706162696c69746965732e7075626c6973682872656365697665724361702c2061743a2066745661756c74446174612e726563656976657250617468290a0a202020207d0a7d0a20f856af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "023ccbbfebf10c47c49e4058a33fd9a29c4191c545de52c9afd27a29d38110aa280246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b53657475702046756e6769626c6520546f6b656e205661756c74000201465420436f6e747261637420416464722e000041646472657373000304465420436f6e7472616374204e616d650001", + "hash": "0246076f1cf5d3160397766a9227b35f592f4d15c014848044c509818328b62b" + }, + { + "title": "FT.02 - Transfer Fungible Token with Paths", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\n\n/// Can pass in any storage path and receiver path identifier instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f907a7f907a3b906a4696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e642072656365697665722070617468206964656e74696669657220696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8bab07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c9b9a6156280812703c15dde74df95cd0d7d1034dd2d8bf0cccf72b6071429886e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e5472616e736665722046756e6769626c6520546f6b656e2077697468205061746873000401416d6f756e740000554669783634000301526563697069656e7400014164647265737300030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "6e5b8c83a3e8445eaa4bed391978443f124d9aa457fabdbaa016e0f65b57591e" + }, + { + "title": "FT.03 - Transfer Fungible Token with Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FungibleTokenMetadataViews from 0xf233dcee88fe0abe\n\n/// Can pass in any contract address and name to transfer a token from that contract\n/// This lets you choose the token you want to send\n///\n/// Any contract can be chosen here, so wallets should check argument values\n/// to make sure the intended token contract name and address is passed in\n///\ntransaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) {\n\n // The Vault resource that holds the tokens that are being transferred\n let tempVault: @{FungibleToken.Vault}\n\n // FTVaultData struct to get paths from\n let vaultData: FungibleTokenMetadataViews.FTVaultData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the vault stored on the passed account at the passed publicPath\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{FungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the fungible token contract\")\n\n // Use that reference to retrieve the FTView \n self.vaultData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData?\n ?? panic(\"Could not resolve the FTVaultData view for the given Fungible token contract\")\n\n // Get a reference to the signer's stored vault\n let vaultRef = signer.storage.borrow(from: self.vaultData.storagePath)\n\t\t\t?? panic(\"Could not borrow reference to the owner's Vault!\")\n\n self.tempVault <- vaultRef.withdraw(amount: amount)\n }\n\n execute {\n let recipient = getAccount(to)\n let receiverRef = recipient.capabilities.borrow<&{FungibleToken.Receiver}>(self.vaultData.receiverPath)\n ?? panic(\"Could not borrow reference to the recipient's Receiver!\")\n\n // Transfer tokens from the signer's stored vault to the receiver capability\n receiverRef.deposit(from: <-self.tempVault)\n }\n}", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "FiatToken", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90944f90940b90844696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f72742046756e6769626c65546f6b656e4d6574616461746156696577732066726f6d203078663233336463656538386665306162650a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d6520746f207472616e73666572206120746f6b656e2066726f6d207468617420636f6e74726163740a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e640a2f2f2f0a2f2f2f20416e7920636f6e74726163742063616e2062652063686f73656e20686572652c20736f2077616c6c6574732073686f756c6420636865636b20617267756d656e742076616c7565730a2f2f2f20746f206d616b6520737572652074686520696e74656e64656420746f6b656e20636f6e7472616374206e616d6520616e6420616464726573732069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28616d6f756e743a205546697836342c20746f3a20416464726573732c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865205661756c74207265736f75726365207468617420686f6c64732074686520746f6b656e73207468617420617265206265696e67207472616e736665727265640a202020206c65742074656d705661756c743a20407b46756e6769626c65546f6b656e2e5661756c747d0a0a202020202f2f2046545661756c74446174612073747275637420746f206765742070617468732066726f6d0a202020206c6574207661756c74446174613a2046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865207661756c742073746f726564206f6e2074686520706173736564206163636f756e742061742074686520706173736564207075626c6963506174680a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f207468652066756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f2072657472696576652074686520465456696577200a202020202020202073656c662e7661756c7444617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c46756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613e282929206173212046756e6769626c65546f6b656e4d6574616461746156696577732e46545661756c74446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c7665207468652046545661756c7444617461207669657720666f722074686520676976656e2046756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204765742061207265666572656e636520746f20746865207369676e657227732073746f726564207661756c740a20202020202020206c6574207661756c74526566203d207369676e65722e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e57697468647261772920267b46756e6769626c65546f6b656e2e50726f76696465727d3e2866726f6d3a2073656c662e7661756c74446174612e73746f7261676550617468290a0909093f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f20746865206f776e65722773205661756c742122290a0a202020202020202073656c662e74656d705661756c74203c2d207661756c745265662e776974686472617728616d6f756e743a20616d6f756e74290a202020207d0a0a2020202065786563757465207b0a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e7661756c74446174612e726563656976657250617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e7427732052656365697665722122290a0a20202020202020202f2f205472616e7366657220746f6b656e732066726f6d20746865207369676e657227732073746f726564207661756c7420746f20746865207265636569766572206361706162696c6974790a202020202020202072656365697665725265662e6465706f7369742866726f6d3a203c2d73656c662e74656d705661756c74290a202020207d0a7df8b7b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da57b2276616c7565223a2246696174546f6b656e222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020adc1ebe8246cf7656aefd9bf336f7f0c102a039e343776da61da4d6aa39aed2d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e6005472616e736665722046756e6769626c6520546f6b656e20776974682041646472000401416d6f756e740000554669783634000301526563697069656e74000141646472657373000301465420436f6e747261637420416464722e000241646472657373000304465420436f6e7472616374204e616d650003", + "hash": "d8f826a451d808697ed3ce7908a080c05219df458e3e6cd4ccd073600c58e600" + }, + { + "title": "NFT.01 - Setup NFT Collection", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "/// This transaction is what an account would run\n/// to set itself up to receive NFTs. This function\n/// uses views to know where to set up the collection\n/// in storage and to create the empty collection.\n\nimport NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\ntransaction(contractAddress: Address, contractName: String) {\n\n prepare(signer: auth(IssueStorageCapabilityController, PublishCapability, SaveValue) &Account) {\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n let collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n // Create a new empty collections\n let emptyCollection <- collectionData.createEmptyCollection()\n\n // save it to the account\n signer.storage.save(<-emptyCollection, to: collectionData.storagePath)\n\n // create a public capability for the collection\n let collectionCap = signer.capabilities.storage.issue<&{NonFungibleToken.Collection}>(\n collectionData.storagePath\n )\n signer.capabilities.publish(collectionCap, at: collectionData.publicPath)\n }\n}\n", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90702f906feb906652f2f2f2054686973207472616e73616374696f6e206973207768617420616e206163636f756e7420776f756c642072756e0a2f2f2f20746f2073657420697473656c6620757020746f2072656365697665204e4654732e20546869732066756e6374696f6e0a2f2f2f207573657320766965777320746f206b6e6f7720776865726520746f207365742075702074686520636f6c6c656374696f6e0a2f2f2f20696e2073746f7261676520616e6420746f206372656174652074686520656d70747920636f6c6c656374696f6e2e0a0a696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a7472616e73616374696f6e28636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a2020202070726570617265287369676e65723a206175746828497373756553746f726167654361706162696c697479436f6e74726f6c6c65722c205075626c6973684361706162696c6974792c205361766556616c75652920264163636f756e7429207b0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a20202020202020206c657420636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f204372656174652061206e657720656d70747920636f6c6c656374696f6e730a20202020202020206c657420656d707479436f6c6c656374696f6e203c2d20636f6c6c656374696f6e446174612e637265617465456d707479436f6c6c656374696f6e28290a0a20202020202020202f2f207361766520697420746f20746865206163636f756e740a20202020202020207369676e65722e73746f726167652e73617665283c2d656d707479436f6c6c656374696f6e2c20746f3a20636f6c6c656374696f6e446174612e73746f7261676550617468290a0a20202020202020202f2f206372656174652061207075626c6963206361706162696c69747920666f722074686520636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a20202020202020202020202020202020636f6c6c656374696f6e446174612e73746f72616765506174680a202020202020202020202020290a20202020202020207369676e65722e6361706162696c69746965732e7075626c69736828636f6c6c656374696f6e4361702c2061743a20636f6c6c656374696f6e446174612e7075626c696350617468290a202020207d0a7d0af854af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0254fae25bb09f5a324821b644890acbc5a356bcbe821218edeb18bd3042dcd333a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e766115365747570204e465420436f6c6c656374696f6e0002014e465420436f6e747261637420416464720000416464726573730003044e465420436f6e7472616374204e616d650001", + "hash": "a25e07dea5eb608387d3766fd6ce0110491599a6d61a5e7e9afddd19a7e76611" + }, + { + "title": "NFT.02 - Transfer NFT with Paths", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\n\n/// Can pass in any storage path and receiver path instead of just the default.\n/// This lets you choose the token you want to send as well the capability you want to send it to.\n///\n/// Any token path can be passed as an argument here, so wallets should\n/// should check argument values to make sure the intended token path is passed in\n///\ntransaction(to: Address, id: UInt64, senderPathIdentifier: String, receiverPathIdentifier: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n let storagePath = StoragePath(identifier: senderPathIdentifier)\n ?? panic(\"Could not construct a storage path from the provided path identifier string\")\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n let publicPath = PublicPath(identifier: receiverPathIdentifier)\n ?? panic(\"Could not construct a public path from the provided path identifier string\")\n\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "flowTokenVault", + "type": "String" + }, + { + "value": "flowTokenReceiver", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f907f0f907ecb906ff696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e792073746f72616765207061746820616e64207265636569766572207061746820696e7374656164206f66206a757374207468652064656661756c742e0a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e642061732077656c6c20746865206361706162696c69747920796f752077616e7420746f2073656e6420697420746f2e0a2f2f2f0a2f2f2f20416e7920746f6b656e20706174682063616e2062652070617373656420617320616e20617267756d656e7420686572652c20736f2077616c6c6574732073686f756c640a2f2f2f2073686f756c6420636865636b20617267756d656e742076616c75657320746f206d616b6520737572652074686520696e74656e64656420746f6b656e20706174682069732070617373656420696e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c2073656e646572506174684964656e7469666965723a20537472696e672c207265636569766572506174684964656e7469666965723a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020206c65742073746f7261676550617468203d2053746f7261676550617468286964656e7469666965723a2073656e646572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e73747275637420612073746f7261676520706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020206c6574207075626c696350617468203d205075626c696350617468286964656e7469666965723a207265636569766572506174684964656e746966696572290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420636f6e7374727563742061207075626c696320706174682066726f6d207468652070726f76696465642070617468206964656e74696669657220737472696e6722290a0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e287075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a8af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daa7b2276616c7565223a22666c6f77546f6b656e5661756c74222c2274797065223a22537472696e67227dad7b2276616c7565223a22666c6f77546f6b656e5265636569766572222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02db0518029ca76e6f2d8ec1517768b1d395523e87d11a4297197f98b53dc9cc2d2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd13655472616e73666572204e46542077697468205061746873000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e74363400030453656e2e20436f6c6c20506174682049640002045265632e20436f6c6c20506174682049640003", + "hash": "2cb2cd6408a35f08b4f9b13e6e6b44d5325eb78a7a1eebb0e790ee285bdd1365" + }, + { + "title": "NFT.03 - Transfer NFT with Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import NonFungibleToken from 0x1d7e57aa55817448\nimport MetadataViews from 0x1d7e57aa55817448\n\n/// Can pass in any contract address and name\n/// This lets you choose the token you want to send because\n/// the transaction gets the metadata from the provided contract.\n///\ntransaction(to: Address, id: UInt64, contractAddress: Address, contractName: String) {\n\n // The NFT resource to be transferred\n let tempNFT: @{NonFungibleToken.NFT}\n\n // NFTCollectionData struct to get paths from\n let collectionData: MetadataViews.NFTCollectionData\n\n prepare(signer: auth(BorrowValue) &Account) {\n\n // Borrow a reference to the nft contract deployed to the passed account\n let resolverRef = getAccount(contractAddress)\n .contracts.borrow<&{NonFungibleToken}>(name: contractName)\n ?? panic(\"Could not borrow a reference to the non-fungible token contract\")\n\n // Use that reference to retrieve the NFTCollectionData view \n self.collectionData = resolverRef.resolveContractView(resourceType: nil, viewType: Type()) as! MetadataViews.NFTCollectionData?\n ?? panic(\"Could not resolve the NFTCollectionData view for the given non-fungible token contract\")\n\n\n // borrow a reference to the signer's NFT collection\n let withdrawRef = signer.storage.borrow(\n from: self.collectionData.storagePath\n ) ?? panic(\"Account does not store a collection object at the specified path\")\n\n self.tempNFT <- withdrawRef.withdraw(withdrawID: id)\n }\n\n execute {\n // get the recipients public account object\n let recipient = getAccount(to)\n\n // borrow a public reference to the receivers collection\n let receiverRef = recipient.capabilities.borrow<&{NonFungibleToken.Receiver}>(self.collectionData.publicPath)\n ?? panic(\"Could not borrow reference to the recipient's receiver\")\n\n // Deposit the NFT to the receiver\n receiverRef.deposit(token: <-self.tempNFT)\n }\n}", + "arguments": [ + { + "type": "Address", + "value": "0xe467b9dd11fa00df" + }, + { + "value": "10", + "type": "UInt64" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + }, + { + "value": "TopShot", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90925f90921b90839696d706f7274204e6f6e46756e6769626c65546f6b656e2066726f6d203078316437653537616135353831373434380a696d706f7274204d6574616461746156696577732066726f6d203078316437653537616135353831373434380a0a2f2f2f2043616e207061737320696e20616e7920636f6e7472616374206164647265737320616e64206e616d650a2f2f2f2054686973206c65747320796f752063686f6f73652074686520746f6b656e20796f752077616e7420746f2073656e6420626563617573650a2f2f2f20746865207472616e73616374696f6e206765747320746865206d657461646174612066726f6d207468652070726f766964656420636f6e74726163742e0a2f2f2f0a7472616e73616374696f6e28746f3a20416464726573732c2069643a2055496e7436342c20636f6e7472616374416464726573733a20416464726573732c20636f6e74726163744e616d653a20537472696e6729207b0a0a202020202f2f20546865204e4654207265736f7572636520746f206265207472616e736665727265640a202020206c65742074656d704e46543a20407b4e6f6e46756e6769626c65546f6b656e2e4e46547d0a0a202020202f2f204e4654436f6c6c656374696f6e446174612073747275637420746f206765742070617468732066726f6d0a202020206c657420636f6c6c656374696f6e446174613a204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174610a0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652920264163636f756e7429207b0a0a20202020202020202f2f20426f72726f772061207265666572656e636520746f20746865206e667420636f6e7472616374206465706c6f79656420746f2074686520706173736564206163636f756e740a20202020202020206c6574207265736f6c766572526566203d206765744163636f756e7428636f6e747261637441646472657373290a2020202020202020202020202e636f6e7472616374732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e7d3e286e616d653a20636f6e74726163744e616d65290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f20746865206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a20202020202020202f2f205573652074686174207265666572656e636520746f20726574726965766520746865204e4654436f6c6c656374696f6e446174612076696577200a202020202020202073656c662e636f6c6c656374696f6e44617461203d207265736f6c7665725265662e7265736f6c7665436f6e747261637456696577287265736f75726365547970653a206e696c2c2076696577547970653a20547970653c4d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613e28292920617321204d6574616461746156696577732e4e4654436f6c6c656374696f6e446174613f0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f74207265736f6c766520746865204e4654436f6c6c656374696f6e44617461207669657720666f722074686520676976656e206e6f6e2d66756e6769626c6520746f6b656e20636f6e747261637422290a0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207369676e65722773204e465420636f6c6c656374696f6e0a20202020202020206c6574207769746864726177526566203d207369676e65722e73746f726167652e626f72726f773c61757468284e6f6e46756e6769626c65546f6b656e2e57697468647261772920267b4e6f6e46756e6769626c65546f6b656e2e436f6c6c656374696f6e7d3e280a2020202020202020202020202020202066726f6d3a2073656c662e636f6c6c656374696f6e446174612e73746f72616765506174680a20202020202020202020202029203f3f2070616e696328224163636f756e7420646f6573206e6f742073746f7265206120636f6c6c656374696f6e206f626a6563742061742074686520737065636966696564207061746822290a0a202020202020202073656c662e74656d704e4654203c2d2077697468647261775265662e776974686472617728776974686472617749443a206964290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f206765742074686520726563697069656e7473207075626c6963206163636f756e74206f626a6563740a20202020202020206c657420726563697069656e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20626f72726f772061207075626c6963207265666572656e636520746f207468652072656365697665727320636f6c6c656374696f6e0a20202020202020206c6574207265636569766572526566203d20726563697069656e742e6361706162696c69746965732e626f72726f773c267b4e6f6e46756e6769626c65546f6b656e2e52656365697665727d3e2873656c662e636f6c6c656374696f6e446174612e7075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207265666572656e636520746f2074686520726563697069656e74277320726563656976657222290a0a20202020202020202f2f204465706f73697420746865204e465420746f207468652072656365697665720a202020202020202072656365697665725265662e6465706f73697428746f6b656e3a203c2d73656c662e74656d704e4654290a202020207d0a7df8a3af7b2274797065223a2241646472657373222c2276616c7565223a22307865343637623964643131666130306466227d9e7b2276616c7565223a223130222c2274797065223a2255496e743634227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da37b2276616c7565223a22546f7053686f74222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02e4b837ce4d30be9bc74768085a0b43ba4d5edb3bed9c23c18b6a4de1024d459b91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb55472616e73666572204e465420776974682041646472657373000401526563697069656e740000416464726573730003014e465420494420746f205472616e7366000155496e7436340003014e465420436f6e747261637420416464720002416464726573730003044e465420436f6e7472616374204e616d650003", + "hash": "91fd4533a93f55a756484958e5409b9666c85e4191e9ba6f5fb3587a973d4eb5" + }, + { + "title": "TH.01 - Withdraw Unlocked FLOW", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: auth(LockedTokens.TokenOperations, FungibleToken.Withdraw) &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.vaultRef.deposit(from: <-self.holderRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90423f9041fb903aa696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a2061757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c61757468284c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732c2046756e6769626c65546f6b656e2e57697468647261772920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7661756c745265662e6465706f7369742866726f6d3a203c2d73656c662e686f6c6465725265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02094798e93daeacaa9ff262486a3683ec5a5e2204407e7d00bc3416fbf3efa3b14a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9576974686472617720556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "4a830e6f93f74179a99e17c7ae762980c7fdc428bc949767529be2f071ac52b9" + }, + { + "title": "TH.02 - Deposit Unlocked FLOW", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport LockedTokens from 0x8d0e87b65159ae63\n\ntransaction(amount: UFix64) {\n\n let holderRef: &LockedTokens.TokenHolder\n let vaultRef: auth(FungibleToken.Withdraw) &FlowToken.Vault\n\n prepare(acct: auth(BorrowValue) &Account) {\n self.holderRef = acct.storage.borrow<&LockedTokens.TokenHolder>(from: LockedTokens.TokenHolderStoragePath)\n ?? panic(\"The primary user account does not have an associated locked account\")\n\n self.vaultRef = acct.storage.borrow(from: /storage/flowTokenVault)\n ?? panic(\"Could not borrow flow token vault ref\")\n }\n\n execute {\n self.holderRef.deposit(from: <-self.vaultRef.withdraw(amount: amount))\n }\n}\n", + "arguments": [ + { + "type": "UFix64", + "value": "92233720368.54775808" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f903adf903a9b90334696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a0a7472616e73616374696f6e28616d6f756e743a2055466978363429207b0a0a202020206c657420686f6c6465725265663a20264c6f636b6564546f6b656e732e546f6b656e486f6c6465720a202020206c6574207661756c745265663a20617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c740a0a202020207072657061726528616363743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e686f6c646572526566203d20616363742e73746f726167652e626f72726f773c264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e2866726f6d3a204c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f7261676550617468290a2020202020202020202020203f3f2070616e69632822546865207072696d6172792075736572206163636f756e7420646f6573206e6f74206861766520616e206173736f636961746564206c6f636b6564206163636f756e7422290a0a202020202020202073656c662e7661756c74526566203d20616363742e73746f726167652e626f72726f773c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e2866726f6d3a202f73746f726167652f666c6f77546f6b656e5661756c74290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f7720666c6f7720746f6b656e207661756c742072656622290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e686f6c6465725265662e6465706f7369742866726f6d3a203c2d73656c662e7661756c745265662e776974686472617728616d6f756e743a20616d6f756e7429290a202020207d0a7d0af1b07b2274797065223a22554669783634222c2276616c7565223a2239323233333732303336382e3534373735383038227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0217ffcd60667893674d8d4044bdd8232959dc8b694df1dd88d1b9c5443352f253038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b614465706f73697420556e6c6f636b656420464c4f57000101416d6f756e7400005546697836340003", + "hash": "038382a947fa96bf2f4dfe5aa9b4b2abee1ef0975955175e80cf911c3edf4b61" + }, + { + "title": "SCO.01 - Setup Staking Collection", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FungibleToken from 0xf233dcee88fe0abe\nimport FlowToken from 0x1654653399040a61\nimport FlowIDTableStaking from 0x8624b52f9ddcd04a\nimport LockedTokens from 0x8d0e87b65159ae63\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// This transaction sets up an account to use a staking collection\n/// It will work regardless of whether they have a regular account, a two-account locked tokens setup,\n/// or staking objects stored in the unlocked account\n\ntransaction {\n prepare(signer: auth(BorrowValue, Storage, Capabilities) &Account) {\n\n // If there isn't already a staking collection\n if signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath) == nil {\n\n // Create private capabilities for the token holder and unlocked vault\n let lockedHolder = signer.capabilities.storage.issue(LockedTokens.TokenHolderStoragePath)!\n let flowToken = signer.capabilities.storage.issue(/storage/flowTokenVault)!\n\n // Create a new Staking Collection and put it in storage\n if lockedHolder.check() {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: lockedHolder\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n } else {\n signer.storage.save(\n <- FlowStakingCollection.createStakingCollection(\n unlockedVault: flowToken,\n tokenHolder: nil\n ),\n to: FlowStakingCollection.StakingCollectionStoragePath\n )\n }\n\n // Publish a capability to the created staking collection.\n let stakingCollectionCap = signer.capabilities.storage.issue<&FlowStakingCollection.StakingCollection>(\n FlowStakingCollection.StakingCollectionStoragePath\n )\n\n signer.capabilities.publish(\n stakingCollectionCap,\n at: FlowStakingCollection.StakingCollectionPublicPath\n )\n }\n\n // borrow a reference to the staking collection\n let collectionRef = signer.storage.borrow<&FlowStakingCollection.StakingCollection>(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow staking collection reference\")\n\n // If there is a node staker object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath) != nil {\n let node <- signer.storage.load<@FlowIDTableStaking.NodeStaker>(from: FlowIDTableStaking.NodeStakerStoragePath)!\n collectionRef.addNodeObject(<-node, machineAccountInfo: nil)\n }\n\n // If there is a delegator object in the account, put it in the staking collection\n if signer.storage.borrow<&FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath) != nil {\n let delegator <- signer.storage.load<@FlowIDTableStaking.NodeDelegator>(from: FlowIDTableStaking.DelegatorStoragePath)!\n collectionRef.addDelegatorObject(<-delegator)\n }\n }\n}\n", + "arguments": [], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90df5f90df1b90dad696d706f72742046756e6769626c65546f6b656e2066726f6d203078663233336463656538386665306162650a696d706f727420466c6f77546f6b656e2066726f6d203078313635343635333339393034306136310a696d706f727420466c6f7749445461626c655374616b696e672066726f6d203078383632346235326639646463643034610a696d706f7274204c6f636b6564546f6b656e732066726f6d203078386430653837623635313539616536330a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2054686973207472616e73616374696f6e207365747320757020616e206163636f756e7420746f207573652061207374616b696e6720636f6c6c656374696f6e0a2f2f2f2049742077696c6c20776f726b207265676172646c657373206f66207768657468657220746865792068617665206120726567756c6172206163636f756e742c20612074776f2d6163636f756e74206c6f636b656420746f6b656e732073657475702c0a2f2f2f206f72207374616b696e67206f626a656374732073746f72656420696e2074686520756e6c6f636b6564206163636f756e740a0a7472616e73616374696f6e207b0a2020202070726570617265287369676e65723a206175746828426f72726f7756616c75652c2053746f726167652c204361706162696c69746965732920264163636f756e7429207b0a0a20202020202020202f2f2049662074686572652069736e277420616c72656164792061207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f726167655061746829203d3d206e696c207b0a0a2020202020202020202020202f2f204372656174652070726976617465206361706162696c697469657320666f722074686520746f6b656e20686f6c64657220616e6420756e6c6f636b6564207661756c740a2020202020202020202020206c6574206c6f636b6564486f6c646572203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e57697468647261772c204c6f636b6564546f6b656e732e546f6b656e4f7065726174696f6e732920264c6f636b6564546f6b656e732e546f6b656e486f6c6465723e284c6f636b6564546f6b656e732e546f6b656e486f6c64657253746f726167655061746829210a2020202020202020202020206c657420666c6f77546f6b656e203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c617574682846756e6769626c65546f6b656e2e5769746864726177292026466c6f77546f6b656e2e5661756c743e282f73746f726167652f666c6f77546f6b656e5661756c7429210a0a2020202020202020202020202f2f204372656174652061206e6577205374616b696e6720436f6c6c656374696f6e20616e642070757420697420696e2073746f726167650a2020202020202020202020206966206c6f636b6564486f6c6465722e636865636b2829207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206c6f636b6564486f6c6465720a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d20656c7365207b0a202020202020202020202020202020207369676e65722e73746f726167652e73617665280a20202020202020202020202020202020202020203c2d20466c6f775374616b696e67436f6c6c656374696f6e2e6372656174655374616b696e67436f6c6c656374696f6e280a202020202020202020202020202020202020202020202020756e6c6f636b65645661756c743a20666c6f77546f6b656e2c0a202020202020202020202020202020202020202020202020746f6b656e486f6c6465723a206e696c0a2020202020202020202020202020202020202020292c0a2020202020202020202020202020202020202020746f3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a20202020202020202020202020202020290a2020202020202020202020207d0a0a2020202020202020202020202f2f205075626c6973682061206361706162696c69747920746f207468652063726561746564207374616b696e6720636f6c6c656374696f6e2e0a2020202020202020202020206c6574207374616b696e67436f6c6c656374696f6e436170203d207369676e65722e6361706162696c69746965732e73746f726167652e69737375653c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e280a20202020202020202020202020202020466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f72616765506174680a202020202020202020202020290a0a2020202020202020202020207369676e65722e6361706162696c69746965732e7075626c697368280a202020202020202020202020202020207374616b696e67436f6c6c656374696f6e4361702c0a2020202020202020202020202020202061743a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c6963506174680a202020202020202020202020290a20202020202020207d0a0a20202020202020202f2f20626f72726f772061207265666572656e636520746f20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206c657420636f6c6c656374696f6e526566203d207369676e65722e73746f726167652e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f77207374616b696e6720636f6c6c656374696f6e207265666572656e636522290a0a20202020202020202f2f2049662074686572652069732061206e6f6465207374616b6572206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c6574206e6f6465203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f64655374616b65723e2866726f6d3a20466c6f7749445461626c655374616b696e672e4e6f64655374616b657253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e6164644e6f64654f626a656374283c2d6e6f64652c206d616368696e654163636f756e74496e666f3a206e696c290a20202020202020207d0a0a20202020202020202f2f20496620746865726520697320612064656c656761746f72206f626a65637420696e20746865206163636f756e742c2070757420697420696e20746865207374616b696e6720636f6c6c656374696f6e0a20202020202020206966207369676e65722e73746f726167652e626f72726f773c26466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f72616765506174682920213d206e696c207b0a2020202020202020202020206c65742064656c656761746f72203c2d207369676e65722e73746f726167652e6c6f61643c40466c6f7749445461626c655374616b696e672e4e6f646544656c656761746f723e2866726f6d3a20466c6f7749445461626c655374616b696e672e44656c656761746f7253746f726167655061746829210a202020202020202020202020636f6c6c656374696f6e5265662e61646444656c656761746f724f626a656374283c2d64656c656761746f72290a20202020202020207d0a202020207d0a7d0ac0a0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02861784e7ac135a9cfec90decdff2e53971a4d63135db77bcef3b273b710b181469f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d95365747570205374616b696e6720436f6c6c656374696f6e0000", + "hash": "69f30decc15bd78107c631e200963398e8ddbc58bb61e577d223725f348fc2d9" + }, + { + "title": "SCO.02 - Register Delegator", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified nodeID and the amount of tokens to commit\n\ntransaction(id: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.registerDelegator(nodeID: id, amount: amount) \n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9040af90406b90332696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f6465494420616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e726567697374657244656c656761746f72286e6f646549443a2069642c20616d6f756e743a20616d6f756e74292020202020200a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02e093df9c425be9cdbee44bdbbd721f6aff523e41802a50cf0ff353873e9f94830a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c4730044874452656769737465722044656c656761746f720002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "0a41e53ad3c9c1c16c8732dd8331b8ca66063617d433b01d4d09c47300448744" + }, + { + "title": "SCO.03 - Register Node", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Registers a delegator in the staking collection resource\n/// for the specified node information and the amount of tokens to commit\n\ntransaction(id: String,\n role: UInt8,\n networkingAddress: String,\n networkingKey: String,\n stakingKey: String,\n amount: UFix64,\n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n\n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.registerNode(\n id: id,\n role: role,\n networkingAddress: networkingAddress,\n networkingKey: networkingKey,\n stakingKey: stakingKey,\n amount: amount,\n payer: account\n ) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "flow-node.test:3569", + "type": "String" + }, + { + "value": "1348307bc77c688e80049de9d081aa09755da33e6997605fa059db2144fc85e560cbe6f7da8d74b453f5916618cb8fd392c2db856f3e78221dc68db1b1d914e4", + "type": "String" + }, + { + "value": "9e9ae0d645fd5fd9050792e0b0daa82cc1686d9133afa0f81a784b375c42ae48567d1545e7a9e1965f2c1a32f73cf8575ebb7a967f6e4d104d2df78eb8be409135d12da0499b8a00771f642c1b9c49397f22b440439f036c3bdee82f5309dab3", + "type": "String" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90b28f90b24b907a0696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f2052656769737465727320612064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e207265736f757263650a2f2f2f20666f722074686520737065636966696564206e6f646520696e666f726d6174696f6e20616e642074686520616d6f756e74206f6620746f6b656e7320746f20636f6d6d69740a0a7472616e73616374696f6e2869643a20537472696e672c0a202020202020202020202020726f6c653a2055496e74382c0a2020202020202020202020206e6574776f726b696e67416464726573733a20537472696e672c0a2020202020202020202020206e6574776f726b696e674b65793a20537472696e672c0a2020202020202020202020207374616b696e674b65793a20537472696e672c0a202020202020202020202020616d6f756e743a205546697836342c0a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a0a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e72656769737465724e6f6465280a20202020202020202020202069643a2069642c0a202020202020202020202020726f6c653a20726f6c652c0a2020202020202020202020206e6574776f726b696e67416464726573733a206e6574776f726b696e67416464726573732c0a2020202020202020202020206e6574776f726b696e674b65793a206e6574776f726b696e674b65792c0a2020202020202020202020207374616b696e674b65793a207374616b696e674b65792c0a202020202020202020202020616d6f756e743a20616d6f756e742c0a20202020202020202020202070617965723a206163636f756e740a202020202020202029207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d0a202020207d0a7d0af9033eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227db89c7b2276616c7565223a223133343833303762633737633638386538303034396465396430383161613039373535646133336536393937363035666130353964623231343466633835653536306362653666376461386437346234353366353931363631386362386664333932633264623835366633653738323231646336386462316231643931346534222c2274797065223a22537472696e67227db8dc7b2276616c7565223a22396539616530643634356664356664393035303739326530623064616138326363313638366439313333616661306638316137383462333735633432616534383536376431353435653761396531393635663263316133326637336366383537356562623761393637663665346431303464326466373865623862653430393133356431326461303439396238613030373731663634326331623963343933393766323262343430343339663033366333626465653832663533303964616233222c2274797065223a22537472696e67227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02deb5f758f3eb3b125cd9b14a6528f18d535377709fcef41e743751eb828009213b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df52675265676973746572204e6f64650009044e6f64652049440000074e6f646520526f6c650001044e6574772e20416464726573730002044e6574772e204b65790003045374616b696e67204b6579000401416d6f756e7400055546697836340003044d41205075622e204b65790006064d41205369676e2e20416c672e0007054d41204861736820416c672e0008", + "hash": "3b0b2bbc3a2ad674122c182112f7008a8d3d1b60b107033c0ebe7bbe50df5267" + }, + { + "title": "SCO.04 - Create Machine Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import Crypto\nimport FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Creates a machine account for a node that is already in the staking collection\n/// and adds public keys to the new account\n\ntransaction(nodeID: String, \n machineAccountKey: String, \n machineAccountKeySignatureAlgorithm: UInt8, \n machineAccountKeyHashAlgorithm: UInt8) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n if let machineAccount = self.stakingCollectionRef.createMachineAccountForExistingNode(nodeID: nodeID, payer: account) {\n let sigAlgo = SignatureAlgorithm(rawValue: machineAccountKeySignatureAlgorithm)\n ?? panic(\"Could not get a signature algorithm from the raw enum value provided\")\n\n let hashAlgo = HashAlgorithm(rawValue: machineAccountKeyHashAlgorithm)\n ?? panic(\"Could not get a hash algorithm from the raw enum value provided\")\n \n let publicKey = PublicKey(\n\t\t\t publicKey: machineAccountKey.decodeHex(),\n\t\t\t signatureAlgorithm: sigAlgo\n\t\t )\n machineAccount.keys.add(publicKey: publicKey, hashAlgorithm: hashAlgo, weight: 1000.0)\n } else {\n panic(\"Could not create a machine account for the node\")\n }\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67fe314dba5363c81654595d64884b1ecad1512a64e65e020164", + "type": "String" + }, + { + "value": "1", + "type": "UInt8" + }, + { + "value": "1", + "type": "UInt8" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9082ff9082bb906a1696d706f72742043727970746f0a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20437265617465732061206d616368696e65206163636f756e7420666f722061206e6f6465207468617420697320616c726561647920696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f20616e642061646473207075626c6963206b65797320746f20746865206e6577206163636f756e740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65793a20537472696e672c200a2020202020202020202020206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d3a2055496e74382c200a2020202020202020202020206d616368696e654163636f756e744b657948617368416c676f726974686d3a2055496e743829207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020206966206c6574206d616368696e654163636f756e74203d2073656c662e7374616b696e67436f6c6c656374696f6e5265662e6372656174654d616368696e654163636f756e74466f724578697374696e674e6f6465286e6f646549443a206e6f646549442c2070617965723a206163636f756e7429207b0a2020202020202020202020206c657420736967416c676f203d205369676e6174757265416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b65795369676e6174757265416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061207369676e617475726520616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a0a2020202020202020202020206c65742068617368416c676f203d2048617368416c676f726974686d2872617756616c75653a206d616368696e654163636f756e744b657948617368416c676f726974686d290a202020202020202020202020202020203f3f2070616e69632822436f756c64206e6f74206765742061206861736820616c676f726974686d2066726f6d207468652072617720656e756d2076616c75652070726f766964656422290a2020202020202020202020200a2020202020202020202020206c6574207075626c69634b6579203d205075626c69634b6579280a090909202020207075626c69634b65793a206d616368696e654163636f756e744b65792e6465636f646548657828292c0a090909202020207369676e6174757265416c676f726974686d3a20736967416c676f0a090920202020290a2020202020202020202020206d616368696e654163636f756e742e6b6579732e616464287075626c69634b65793a207075626c69634b65792c2068617368416c676f726974686d3a2068617368416c676f2c207765696768743a20313030302e30290a20202020202020207d20656c7365207b0a20202020202020202020202070616e69632822436f756c64206e6f74206372656174652061206d616368696e65206163636f756e7420666f7220746865206e6f646522290a20202020202020207d0a202020207d0a7d0af90144b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db8aa7b2276616c7565223a2266383435623834303665346634336637396433633164386361636233643566336537616565646232396665616562343535396664623731613937653266643034333835363533313065383736373030333564383362633130666536376665333134646261353336336338313635343539356436343838346231656361643135313261363465363565303230313634222c2274797065223a22537472696e67227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227d9c7b2276616c7565223a2231222c2274797065223a2255496e7438227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024c1ad61500bcd0d32d7aa7eb84ca9b7417219ed6d524e05de8c55fb7d50940e4f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01437265617465204d616368696e65204163636f756e740004044e6f64652049440000044d41205075622e204b65790001064d41205369676e2e20416c672e0002054d41204861736820416c672e0003", + "hash": "f0a6cedb6703cd4ce4cc3b735e5edb5a7e5b17a87a725343d745e5d53b7c0a01" + }, + { + "title": "SCO.05 - Request Unstaking - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90434f90430b9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "title": "SCO.05 - Request Unstaking - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests unstaking for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.requestUnstaking(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9044ff9044bb9033b696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320756e7374616b696e6720666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e72657175657374556e7374616b696e67286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "022d59f2c2c402f919c8dba30009e31480d54e2b250d2e10456e1ff029bd7cce99f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee2765295265717565737420556e7374616b696e670003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "f26c058a127500fcd8445ba9fcf55149fe8f1a1a7cd212688d13fcd6ee276529" + }, + { + "title": "SCO.06 - Stake New Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904b0f904acb903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "title": "SCO.06 - Stake New Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits new tokens to stake for the specified node or delegator in the staking collection\n/// The tokens from the locked vault are used first, if it exists\n/// followed by the tokens from the unlocked vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeNewTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904cbf904c7b903b7696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d697473206e657720746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e732066726f6d20746865206c6f636b6564207661756c742061726520757365642066697273742c206966206974206578697374730a2f2f2f20666f6c6c6f7765642062792074686520746f6b656e732066726f6d2074686520756e6c6f636b6564207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b654e6577546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02cf2b03950077352487e6344ab65edc3e1856731ab9cf68aa2ebbe279ae496d4b4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d5374616b65204e657720546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "4c0658934352486097cc89fa06b98bac21e514770fc6a4d70a7adc4bec6d711d" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "title": "SCO.07 - Stake Rewarded Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits rewarded tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320726577617264656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b655265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "024395faf2e515eea4d40f82416ad387575f0d5a580612223c361130e53e72f00bc989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e3485374616b6520526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c989e8b3beb9c2eb5af2ee1e11d592c9f1131e76e7ef105a0d40cf1610d1e348" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90445f90441b9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "title": "SCO.08 - Stake Unstaked Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Commits unstaked tokens to stake for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.stakeUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90460f9045cb9034c696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20436f6d6d69747320756e7374616b656420746f6b656e7320746f207374616b6520666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7374616b65556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "020b1721f2a8ef6c0c4121ef83c7b38f2141eebcd65c72dab9ebaafe1b4d66fea8fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b85374616b6520556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fe6adb75bf22b2033800e916fa7e3a7810417e9a36d35320de7f4b5f7ec4f1b8" + }, + { + "title": "SCO.09 - Unstake All", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Requests to unstake ALL tokens for the specified node or delegator in the staking collection\n\ntransaction(nodeID: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.unstakeAll(nodeID: nodeID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90398f90394b902f1696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f20526571756573747320746f20756e7374616b6520414c4c20746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a0a7472616e73616374696f6e286e6f646549443a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e756e7374616b65416c6c286e6f646549443a206e6f64654944290a202020207d0a7d0af85eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02c84843e3399be2ce95ea00e7c17d72db3c5c3363ec008c7a1c1cfa5b6afe70ae1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510556e7374616b6520416c6c0001044e6f64652049440000", + "hash": "1c8256fb857f6c6fd929511ecac8624d0159877cf72c884f7128297dfb069510" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90501f904fdb903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "title": "SCO.10 - Withdraw Rewarded Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw rewarded tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawRewardedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904e6f904e2b903ed696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720726577617264656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e77697468647261775265776172646564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "025a07ca4c016973bdeb168590e111b2c2855833b5ece11ffb28b08b8668f258a8fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34576974686472617720526577617264656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "fbd8ebbfff7a88b6b667ff4e3f9f904eaaba71cbf02a140f3b7007c61fbd8f34" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f904f5f904f1b903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8b0b85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "title": "SCO.11 - Withdraw Unstaked Tokens - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw unstaked tokens for the specified node or delegator in the staking collection\n/// The tokens are automatically deposited to the unlocked account vault first,\n/// And then any locked tokens are deposited into the locked account vault if it is there\n\ntransaction(nodeID: String, delegatorID: UInt32?, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawUnstakedTokens(nodeID: nodeID, delegatorID: delegatorID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90510f9050cb903fc696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720756e7374616b656420746f6b656e7320666f722074686520737065636966696564206e6f6465206f722064656c656761746f7220696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c742066697273742c0a2f2f2f20416e64207468656e20616e79206c6f636b656420746f6b656e7320617265206465706f736974656420696e746f20746865206c6f636b6564206163636f756e74207661756c742069662069742069732074686572650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f2c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7769746864726177556e7374616b6564546f6b656e73286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f7249442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af8cbb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "0201fd4ea83d20510d24ed9f245873a7ee2715aefb774495c80bce7e3e34d6442ec2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca576974686472617720556e7374616b656420546f6b656e730003044e6f646520494400000244656c656761746f72204944000155496e743332000301416d6f756e7400025546697836340003", + "hash": "c2484f17e640e285769c3edaa6f2d090dcef1f2f57983f82b7179c3c047290ca" + }, + { + "title": "SCO.12 - Close Stake - 1", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": { + "value": "42", + "type": "UInt32" + }, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90468f90464b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af89ab85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db83a7b2276616c7565223a7b2276616c7565223a223432222c2274797065223a2255496e743332227d2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "title": "SCO.12 - Close Stake - 2", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Closes out a staking object in the staking collection\n// This does not remove the record from the identity table,\n// but it does mean that the account that closes it cannot ever access it again\n\ntransaction(nodeID: String, delegatorID: UInt32?) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.closeStake(nodeID: nodeID, delegatorID: delegatorID)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": null, + "type": "Optional" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9044df90449b90385696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f20436c6f736573206f75742061207374616b696e67206f626a65637420696e20746865207374616b696e6720636f6c6c656374696f6e0a2f2f205468697320646f6573206e6f742072656d6f766520746865207265636f72642066726f6d20746865206964656e74697479207461626c652c0a2f2f2062757420697420646f6573206d65616e207468617420746865206163636f756e74207468617420636c6f7365732069742063616e6e6f7420657665722061636365737320697420616761696e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433323f29207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e636c6f73655374616b65286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a202020207d0a7d0af87fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227da07b2276616c7565223a6e756c6c2c2274797065223a224f7074696f6e616c227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "027e216d96d75414b27c2301a3b0a7816804d43014337a14731d1493531116d185a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93436c6f7365205374616b650002044e6f646520494400000244656c656761746f72204944000155496e7433320003", + "hash": "a0fad319bf8aede66212257ad0d21532858381e2c9d7c4cec179b28180f5be93" + }, + { + "title": "SCO.13 - Transfer Node", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeStaker object from an authorizers account\n// and adds the NodeStaker to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeStaker object to must have a valid Staking Collection in order to receive the NodeStaker.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeStaker to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the receiver's account\")\n\n let machineAccountInfo = self.fromStakingCollectionRef.getMachineAccounts()[nodeID]\n ?? panic(\"Could not get machine account info for the specified node ID\")\n\n // Remove the NodeStaker from the authorizers StakingCollection.\n let nodeStaker <- self.fromStakingCollectionRef.removeNode(nodeID: nodeID)\n\n // Deposit the NodeStaker to the receivers StakingCollection.\n self.toStakingCollectionCap.addNodeObject(<- nodeStaker!, machineAccountInfo: machineAccountInfo)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90971f9096db9089a696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f64655374616b6572206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f64655374616b657220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b6572206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f64655374616b65722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f64655374616b657220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a0a20202020202020206c6574206d616368696e654163636f756e74496e666f203d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e6765744d616368696e654163636f756e747328295b6e6f646549445d0a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420676574206d616368696e65206163636f756e7420696e666f20666f722074686520737065636966696564206e6f646520494422290a0a20202020202020202f2f2052656d6f766520746865204e6f64655374616b65722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f64655374616b6572203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f76654e6f6465286e6f646549443a206e6f64654944290a0a20202020202020202f2f204465706f73697420746865204e6f64655374616b657220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e6164644e6f64654f626a656374283c2d206e6f64655374616b6572212c206d616368696e654163636f756e74496e666f3a206d616368696e654163636f756e74496e666f290a202020207d0a7df88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02a39eedbe19f252c24ba2cc74aa70c0afd68b8d89528cad05a0a535e2f9c6ee873578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c562795472616e73666572204e6f64650002044e6f6465204944000001416464726573730001416464726573730003", + "hash": "3578c7f3b015df3a807dce45a0df262e79d95683cef20bd6247a8f1184c56279" + }, + { + "title": "SCO.14 - Transfer Delegator", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n// Transfers a NodeDelegator object from an authorizers account\n// and adds the NodeDelegator to another accounts Staking Collection\n// identified by the to Address.\n\ntransaction(nodeID: String, delegatorID: UInt32, to: Address) {\n let fromStakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n let toStakingCollectionCap: &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n // The account to transfer the NodeDelegator object to must have a valid Staking Collection in order to receive the NodeDelegator.\n if (!FlowStakingCollection.doesAccountHaveStakingCollection(address: to)) {\n panic(\"Destination account must have a Staking Collection set up.\")\n }\n\n // Get a reference to the authorizers StakingCollection\n self.fromStakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n\n // Get the PublicAccount of the account to transfer the NodeDelegator to. \n let toAccount = getAccount(to)\n\n // Borrow a capability to the public methods available on the receivers StakingCollection.\n self.toStakingCollectionCap = toAccount.capabilities\n .borrow<&FlowStakingCollection.StakingCollection>(FlowStakingCollection.StakingCollectionPublicPath)\n ?? panic(\"Could not borrow a referamce to a StakingCollection in the receiver's account\")\n }\n\n execute {\n // Remove the NodeDelegator from the authorizers StakingCollection.\n let nodeDelegator <- self.fromStakingCollectionRef.removeDelegator(nodeID: nodeID, delegatorID: delegatorID)\n\n // Deposit the NodeDelegator to the receivers StakingCollection.\n self.toStakingCollectionCap.addDelegatorObject(<- nodeDelegator!)\n }\n}", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "42", + "type": "UInt32" + }, + { + "value": "0xe467b9dd11fa00df", + "type": "Address" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f9091ef9091ab90828696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f205472616e73666572732061204e6f646544656c656761746f72206f626a6563742066726f6d20616e20617574686f72697a657273206163636f756e740a2f2f20616e64206164647320746865204e6f646544656c656761746f7220746f20616e6f74686572206163636f756e7473205374616b696e6720436f6c6c656374696f6e0a2f2f206964656e7469666965642062792074686520746f20416464726573732e0a0a7472616e73616374696f6e286e6f646549443a20537472696e672c2064656c656761746f7249443a2055496e7433322c20746f3a204164647265737329207b0a202020206c65742066726f6d5374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a202020206c657420746f5374616b696e67436f6c6c656374696f6e4361703a2026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a20202020202020202f2f20546865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f72206f626a65637420746f206d757374206861766520612076616c6964205374616b696e6720436f6c6c656374696f6e20696e206f7264657220746f207265636569766520746865204e6f646544656c656761746f722e0a20202020202020206966202821466c6f775374616b696e67436f6c6c656374696f6e2e646f65734163636f756e74486176655374616b696e67436f6c6c656374696f6e28616464726573733a20746f2929207b0a20202020202020202020202070616e6963282244657374696e6174696f6e206163636f756e74206d75737420686176652061205374616b696e6720436f6c6c656374696f6e207365742075702e22290a20202020202020207d0a0a20202020202020202f2f204765742061207265666572656e636520746f2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e0a202020202020202073656c662e66726f6d5374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a0a20202020202020202f2f2047657420746865205075626c69634163636f756e74206f6620746865206163636f756e7420746f207472616e7366657220746865204e6f646544656c656761746f7220746f2e200a20202020202020206c657420746f4163636f756e74203d206765744163636f756e7428746f290a0a20202020202020202f2f20426f72726f772061206361706162696c69747920746f20746865207075626c6963206d6574686f647320617661696c61626c65206f6e2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e436170203d20746f4163636f756e742e6361706162696c69746965730a2020202020202020202020202e626f72726f773c26466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e28466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e5075626c696350617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572616d636520746f2061205374616b696e67436f6c6c656374696f6e20696e207468652072656365697665722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a20202020202020202f2f2052656d6f766520746865204e6f646544656c656761746f722066726f6d2074686520617574686f72697a657273205374616b696e67436f6c6c656374696f6e2e0a20202020202020206c6574206e6f646544656c656761746f72203c2d2073656c662e66726f6d5374616b696e67436f6c6c656374696f6e5265662e72656d6f766544656c656761746f72286e6f646549443a206e6f646549442c2064656c656761746f7249443a2064656c656761746f724944290a0a20202020202020202f2f204465706f73697420746865204e6f646544656c656761746f7220746f2074686520726563656976657273205374616b696e67436f6c6c656374696f6e2e0a202020202020202073656c662e746f5374616b696e67436f6c6c656374696f6e4361702e61646444656c656761746f724f626a656374283c2d206e6f646544656c656761746f7221290a202020207d0a7df8adb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227d9e7b2276616c7565223a223432222c2274797065223a2255496e743332227daf7b2276616c7565223a22307865343637623964643131666130306466222c2274797065223a2241646472657373227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02135df83060f854d487030594e954e9642e4cf6accb5b5abbdf88a9e0754689138c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc5472616e736665722044656c656761746f720003044e6f646520494400000144656c656761746f72204944000155496e743332000301416464726573730002416464726573730003", + "hash": "8c7b8460f11ae786c207493eac35deaccb456a31f9df34ddecccad12685c61fc" + }, + { + "title": "SCO.15 - Withdraw From Machine Account", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Request to withdraw tokens from the machine account\n/// The tokens are automatically deposited to the unlocked account vault\n\ntransaction(nodeID: String, amount: UFix64) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.withdrawFromMachineAccount(nodeID: nodeID, amount: amount)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "92233720368.54775808", + "type": "UFix64" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f90419f90415b90341696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f205265717565737420746f20776974686472617720746f6b656e732066726f6d20746865206d616368696e65206163636f756e740a2f2f2f2054686520746f6b656e7320617265206175746f6d61746963616c6c79206465706f736974656420746f2074686520756e6c6f636b6564206163636f756e74207661756c740a0a7472616e73616374696f6e286e6f646549443a20537472696e672c20616d6f756e743a2055466978363429207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e776974686472617746726f6d4d616368696e654163636f756e74286e6f646549443a206e6f646549442c20616d6f756e743a20616d6f756e74290a202020207d0a7d0af88fb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227db07b2276616c7565223a2239323233333732303336382e3534373735383038222c2274797065223a22554669783634227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "02fdd40862af04dc36dd0e9e727966c6f81dd6be8246b9c70afd18297aac9e86a8e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c036903457697468647261772046726f6d204d616368696e65204163636f756e740002044e6f6465204944000001416d6f756e7400015546697836340003", + "hash": "e12b16ef4218b8ce52189ae5814b381272bf473436978fae94d01c10c0369034" + }, + { + "title": "SCO.16 - Update Networking Address", + "valid": true, + "chainID": "Mainnet", + "payloadMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ] + }, + "envelopeMessage": { + "script": "import FlowStakingCollection from 0x8d0e87b65159ae63\n\n/// Changes the networking address for the specified node\n\ntransaction(nodeID: String, newAddress: String) {\n \n let stakingCollectionRef: auth(FlowStakingCollection.CollectionOwner) &FlowStakingCollection.StakingCollection\n\n prepare(account: auth(BorrowValue) &Account) {\n self.stakingCollectionRef = account.storage.borrow(from: FlowStakingCollection.StakingCollectionStoragePath)\n ?? panic(\"Could not borrow a reference to a StakingCollection in the primary user's account\")\n }\n\n execute {\n self.stakingCollectionRef.updateNetworkingAddress(nodeID: nodeID, newAddress: newAddress)\n }\n}\n", + "arguments": [ + { + "type": "String", + "value": "88549335e1db7b5b46c2ad58ddb70b7a45e770cc5fe779650ba26f10e6bae5e6" + }, + { + "value": "flow-node.test:3569", + "type": "String" + } + ], + "refBlock": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", + "gasLimit": 42, + "proposalKey": { + "address": "f19c161bc24cf4b4", + "keyId": 4, + "sequenceNum": 10 + }, + "payer": "f19c161bc24cf4b4", + "authorizers": [ + "f19c161bc24cf4b4" + ], + "payloadSigs": [] + }, + "encodedTransactionPayloadHex": "f903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4", + "encodedTransactionEnvelopeHex": "f903daf903d6b90303696d706f727420466c6f775374616b696e67436f6c6c656374696f6e2066726f6d203078386430653837623635313539616536330a0a2f2f2f204368616e67657320746865206e6574776f726b696e67206164647265737320666f722074686520737065636966696564206e6f64650a0a7472616e73616374696f6e286e6f646549443a20537472696e672c206e6577416464726573733a20537472696e6729207b0a202020200a202020206c6574207374616b696e67436f6c6c656374696f6e5265663a206175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e0a0a2020202070726570617265286163636f756e743a206175746828426f72726f7756616c75652920264163636f756e7429207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e526566203d206163636f756e742e73746f726167652e626f72726f773c6175746828466c6f775374616b696e67436f6c6c656374696f6e2e436f6c6c656374696f6e4f776e6572292026466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e3e2866726f6d3a20466c6f775374616b696e67436f6c6c656374696f6e2e5374616b696e67436f6c6c656374696f6e53746f7261676550617468290a2020202020202020202020203f3f2070616e69632822436f756c64206e6f7420626f72726f772061207265666572656e636520746f2061205374616b696e67436f6c6c656374696f6e20696e20746865207072696d61727920757365722773206163636f756e7422290a202020207d0a0a2020202065786563757465207b0a202020202020202073656c662e7374616b696e67436f6c6c656374696f6e5265662e7570646174654e6574776f726b696e6741646472657373286e6f646549443a206e6f646549442c206e6577416464726573733a206e657741646472657373290a202020207d0a7d0af88eb85c7b2274797065223a22537472696e67222c2276616c7565223a2238383534393333356531646237623562343663326164353864646237306237613435653737306363356665373739363530626132366631306536626165356536227daf7b2276616c7565223a22666c6f772d6e6f64652e746573743a33353639222c2274797065223a22537472696e67227da0f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b2a88f19c161bc24cf4b4040a88f19c161bc24cf4b4c988f19c161bc24cf4b4c0", + "metadata": "023a68789d8cd56e6c7b064057045a56340746aac710db57700de2c33eb6610e5f68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d557064617465204e6574776f726b696e6720416464726573730002044e6f6465204944000004416464726573730001", + "hash": "68d24560d9e49318dca82ab0975f526a8663d934225f0cb715cd1ff188def16d" + } +] \ No newline at end of file diff --git a/transaction_metadata/tree/index.js b/transaction_metadata/tree/index.js new file mode 100644 index 00000000..0fffad13 --- /dev/null +++ b/transaction_metadata/tree/index.js @@ -0,0 +1,260 @@ +const fs = require("fs"); +const jsSHA = require("jssha"); +const { type } = require("os"); + +const MERKLE_TREE_DEPTH = 4 + +//These data are not present in the manifest file, for now, we use these values as they match all current transactions +const MIN_ARRAY_LENGTH = 0 +const MAX_ARRAY_LENGTH = 3 + +const ARGUMENT_TYPE_NORMAL = 1; +const ARGUMENT_TYPE_OPTIONAL = 2; +const ARGUMENT_TYPE_ARRAY = 3; +const ARGUMENT_TYPE_STRING = 4; +const ARGUMENT_TYPE_HASH_ALGO = 5; +const ARGUMENT_TYPE_SIGNATURE_ALGO = 6; +const ARGUMENT_TYPE_NODE_ROLE = 7; +const JSMN_STRING = 3; + +const uint8_to_buff = (n) => { + const buff = Buffer.allocUnsafe(1); + buff.writeUint8(n); + return buff; +} + +//This is to implement custom rules to make the labels shorter +const legerifyTxName = (name) => { + const txNameTransforms = { + "Transfer Fungible Token with Address":"Transfer Fungible Token with Addr" + } + return txNameTransforms[name]?txNameTransforms[name]:name +} + +const legerifyArgLabel = (name) => { + const txArgTransforms = { + "Networking Address":"Netw. Address", + "Networking Key":"Netw. Key", + "Public Keys":"Pub. Key", + "Machine Account Public Key":"MA Pub. Key", + "Raw Value for Machine Account Hash Algorithm Enum":"MA Hash Alg.", + "Raw Value for Machine Account Signature Algorithm Enum":"MA Sign. Alg.", + "Raw Value for Signature Algorithm Enum":"Signature Alg.", + "Raw Value for Hash Algorithm Enum":"Hash Alg.", + "FT Contract Address":"FT Contract Addr.", + "Sender's Collection Path Identifier": "Sen. Coll Path Id", + "Recipient's Receiver Path Identifier": "Rec. Coll Path Id", + "NFT Contract Address": "NFT Contract Addr", + "NFT ID to Transfer": "NFT ID to Transf", + "NFT Contract Address":"NFT Contract Addr" + } + return txArgTransforms[name]?txArgTransforms[name]:name +} + +const enumToType = (name) => { + const argTransforms = { + "Raw Value for Machine Account Hash Algorithm Enum":ARGUMENT_TYPE_HASH_ALGO, + "Raw Value for Machine Account Signature Algorithm Enum":ARGUMENT_TYPE_SIGNATURE_ALGO, + "Raw Value for Signature Algorithm Enum":ARGUMENT_TYPE_SIGNATURE_ALGO, + "Raw Value for Hash Algorithm Enum":ARGUMENT_TYPE_HASH_ALGO, + "Node Role": ARGUMENT_TYPE_NODE_ROLE + } + return argTransforms[name]?argTransforms[name]:ARGUMENT_TYPE_NORMAL +} + +const readManifest = (testnetFile, mainnetFile) => { + const sortFun = (template1, template2) => template1.id > template2.id ? 1 : (template1.id < template2.id ? -1 : 0); + const testnetTemplates = [...JSON.parse(fs.readFileSync(testnetFile)).templates].sort(sortFun); + const mainnetTemplates = [...JSON.parse(fs.readFileSync(mainnetFile)).templates].sort(sortFun); + + //validate that the manifest files match + console.assert(testnetTemplates.length == mainnetTemplates.length); + for(let i=0; i { + const processArg = (arg, idx) => { + if (arg.type == "String") { + return Buffer.concat([ + uint8_to_buff(ARGUMENT_TYPE_STRING), //argument type + Buffer.from(legerifyArgLabel(arg.label)), //argument label + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(idx), //order in which should arguments display + ]) + } + if (arg.type == "UInt8" && enumToType(arg.label) != ARGUMENT_TYPE_NORMAL) { + return Buffer.concat([ + uint8_to_buff(enumToType(arg.label)), //argument type + Buffer.from(legerifyArgLabel(arg.label)), //argument label + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(idx), //order in which should arguments display + ]) + } + if (arg.type[0] !== '[' && arg.type[arg.type.length-1] !== '?') { + return Buffer.concat([ + uint8_to_buff(ARGUMENT_TYPE_NORMAL), //argument type + Buffer.from(legerifyArgLabel(arg.label)), //argument label + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(idx), //order in which should arguments display + Buffer.from(arg.type), //argument type + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(JSMN_STRING), //Argument encoding + ]) + } + if (arg.type[0] !== '[' && arg.type[arg.type.length-1] === '?') { + return Buffer.concat([ + uint8_to_buff(ARGUMENT_TYPE_OPTIONAL), //argument type + Buffer.from(legerifyArgLabel(arg.label)), //argument label + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(idx), //order in which should arguments display + Buffer.from(arg.type.slice(0, -1)), //argument type + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(JSMN_STRING), //Argument encoding + ]) + } + if (arg.type[0] === '[' && arg.type[arg.type.length-1] !== '?') { + return Buffer.concat([ + uint8_to_buff(ARGUMENT_TYPE_ARRAY), //argument type + uint8_to_buff(MIN_ARRAY_LENGTH), //min array length + uint8_to_buff(MAX_ARRAY_LENGTH), //max array length + Buffer.from(legerifyArgLabel(arg.label)), //argument label + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(idx), //order in which should arguments display + Buffer.from(arg.type.slice(1, -1)), //argument type + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(JSMN_STRING), //Argument encoding + ]) + } + if (arg.type[0] === '[' && arg.type[arg.type.length-1] === '?') { + return Buffer.concat([ + uint8_to_buff(ARGUMENT_TYPE_OPTIONALARRAY), //argument type + uint8_to_buff(MIN_ARRAY_LENGTH), //min array length + uint8_to_buff(MAX_ARRAY_LENGTH), //max array length + Buffer.from(legerifyArgLabel(arg.label)), //argument label + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(idx), //order in which should arguments display + Buffer.from(arg.type.slice(1, -2)), //argument type + Buffer.from("00", "hex"), //trailing 0 + uint8_to_buff(JSMN_STRING), //Argument encoding + ]) + } + } + + const result = Buffer.concat([ + Buffer.from("02", "hex"), // number of hashes + Buffer.from(templateTestnet.hash, "hex"), // hash testnet + Buffer.from(templateMainnet.hash, "hex"), // hash mainnet + Buffer.from(legerifyTxName(templateMainnet.name)), // transaction name + Buffer.from("00", "hex"), // trailing 0 after name + uint8_to_buff(templateMainnet.arguments.length), // number of arguments + Buffer.concat(templateMainnet.arguments.map((arg, idx) => processArg(arg, idx))), + ]) + + if (result.length > 255) { + console.log(result.toString('hex')) + throw new Error("Metadata too long!"); + } + + return result + } + + return [...Array(testnetTemplates.length).keys()].map((i) => templatesToMetadata(testnetTemplates[i], mainnetTemplates[i])); +} + +const getMetadataFromCMetadata = (data) => Buffer.concat( + data.map((el) => { + if (typeof el === "string") { + return Buffer.from(el) + } + if (typeof el === "number") { + return uint8_to_buff(el) + } + console.assert(false) + }) +) + +const metadataManifest = readManifest("../manifest.testnet.json", "../manifest.mainnet.json"); +const txMetadata = metadataManifest + +//We add empty metadata strings so we have 7^MERKLE_TREE_DEPTH elementes in the field +const desiredLength = 7**MERKLE_TREE_DEPTH; +const txMetadataFullHex = [...txMetadata.map((b) => b.toString("hex")), ...Array(desiredLength-txMetadata.length).fill("")] + +const processMerkleTreeLevel = (children) => { + const hasher = new jsSHA("SHA-256", "HEX"); + for(child of children) { + if (typeof child === "string") { + hasher.update(child) + } + else { + hasher.update(child.hash); + } + } + return { + hash: hasher.getHash("HEX"), + children: children, + } +} + +//Helper to split array into 7-tuples +const splitTo7Tuples = (array) => { + return array.reduce((result, value, index, array) => { + if (index % 7 == 0) { + result.push(array.slice(index, index + 7)); + } + return result; + }, []) +} + +//Now we prepare the merkle tree +let merkleTree = txMetadataFullHex.map((txMetadata) => processMerkleTreeLevel([txMetadata])) //Level leaves +for(let i=0; i processMerkleTreeLevel(seventuple)) +} +merkleTree = merkleTree[0] + +//We create an index: first 8 bytes of script hash (16 hex digits) => array of indices +const INDEX_HASH_LEN = 8 +let merkleIndex = {} +//to keep it simple... +console.assert(MERKLE_TREE_DEPTH == 4); +for(let idx1=0; idx1<7; idx1++) { + for(let idx2=0; idx2<7; idx2++) { + for(let idx3=0; idx3<7; idx3++) { + for(let idx4=0; idx4<7; idx4++) { + const template = merkleTree.children[idx1].children[idx2].children[idx3].children[idx4].children[0] + const numberOfHashes = parseInt(template.slice(0,2), 16) + for (let hashNo=0; hashNo= 3.10 +- CMocka >= 1.1.5 + +and for code coverage generation: + +- lcov >= 1.14 + +## Overview + +In `unit-tests` folder, compile with + +``` +cmake -Bbuild -H. && make -C build +``` + +and run tests with + +``` +CTEST_OUTPUT_ON_FAILURE=1 make -C build test +``` + +## Generate code coverage + +Just execute in `unit-tests` folder + +``` +./gen_coverage.sh +``` + +it will output `coverage.total` and `coverage/` folder with HTML details (in `coverage/index.html`). diff --git a/unit-tests/gen_coverage.sh b/unit-tests/gen_coverage.sh new file mode 100755 index 00000000..80482705 --- /dev/null +++ b/unit-tests/gen_coverage.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +set -x +set -e + +BUILD_DIRECTORY=$(realpath build/) + +lcov --directory . -b "${BUILD_DIRECTORY}" --capture --initial -o coverage.base && +lcov --rc lcov_branch_coverage=1 --directory . -b "${BUILD_DIRECTORY}" --capture -o coverage.capture && +lcov --directory . -b "${BUILD_DIRECTORY}" --add-tracefile coverage.base --add-tracefile coverage.capture -o coverage.info && +lcov --directory . -b "${BUILD_DIRECTORY}" --remove coverage.info '*/unit-tests/*' -o coverage.info && +echo "Generated 'coverage.info'." && +genhtml coverage.info -o coverage + +rm -f coverage.base coverage.capture diff --git a/unit-tests/parser.c b/unit-tests/parser.c new file mode 100644 index 00000000..0f9503a6 --- /dev/null +++ b/unit-tests/parser.c @@ -0,0 +1,482 @@ +/******************************************************************************* + * (c) 2020 Zondax GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include + +#include "json/json_parser.h" +#include "parser_tx.h" + +const char *token2 = "{\"type\":\"Optional\",\"value\":null}"; +const char *token3 = "{\"type\":\"Optional\",\"value\":{\"type\":\"UFix64\",\"value\":\"545.77\"}}"; + +const char *token4 = + "{\"type\":\"Optional\",\"value\":{\"type\": \"Array\",\"value\":" + "[{\"type\":\"String\",\"value\":" + "\"f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}]}}"; +const char *token5 = + "{\"type\":\"Optional\",\"value\":{\"type\": \"Array\",\"value\":" + "[{\"type\":\"String\",\"value\":" + "\"e845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}," + "{\"type\":\"String\",\"value\":" + "\"d845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}]}}"; +const char *token6 = "{\"type\":\"UFix64\",\"value\":\"545.77\"}"; +const char *token7 = + "{\"type\": \"Array\",\"value\":" + "[{\"type\":\"String\",\"value\":" + "\"e845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}," + "{\"type\":\"String\",\"value\":" + "\"d845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}]}"; + +const char *token2b = "{\"value\":null,\"type\":\"Optional\"}"; +const char *token3b = + "{\"value\":{\"value\":\"545.77\",\"type\":\"UFix64\"},\"type\":\"Optional\"}"; + +const char *token4b = + "{\"value\":{\"type\": \"Array\",\"value\":" + "[{\"value\":" + "\"f845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\",\"type\":\"String\"}]}," + "\"type\":\"Optional\"}"; +const char *token5b = + "{\"value\":{\"type\": \"Array\",\"value\":" + "[{\"value\":" + "\"e845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\",\"type\":\"String\"}," + "{\"value\":" + "\"d845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\",\"type\":\"String\"}]}," + "\"type\":\"Optional\"}"; +const char *token6b = "{\"value\":\"545.77\",\"type\":\"UFix64\"}"; +const char *token7b = + "{\"value\":" + "[{\"type\":\"String\",\"value\":" + "\"e845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}," + "{\"type\":\"String\",\"value\":" + "\"d845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb29feaeb4559fdb71a97e2fd0438565310e87670035d83bc10fe67" + "fe314dba5363c81654595d64884b1ecad1512a64e65e020164\"}]," + "\"type\": \"Array\"}"; + +const char *dummy = ""; +const char *token2c = "{\"value\":\"1\",\"type\":\"UInt8\"}"; +const char *token3c = "{\"value\":\"2\",\"type\":\"UInt8\"}"; +const char *token4c = "{\"value\":\"3\",\"type\":\"UInt8\"}"; +const char *token5c = "{\"value\":\"4\",\"type\":\"UInt8\"}"; +const char *token6c = "{\"value\":\"5\",\"type\":\"UInt8\"}"; +const char *token7c = "{\"value\":\"6\",\"type\":\"UInt8\"}"; + +flow_argument_list_t arg_list; +flow_argument_list_t arg_list_b; +flow_argument_list_t arg_list_c; + +void createArgList() { + const parser_context_t context0 = {(const uint8_t *) dummy, strlen(dummy), 0}; + const parser_context_t context2 = {(const uint8_t *) token2, strlen(token2), 0}; + const parser_context_t context3 = {(const uint8_t *) token3, strlen(token3), 0}; + const parser_context_t context4 = {(const uint8_t *) token4, strlen(token4), 0}; + const parser_context_t context5 = {(const uint8_t *) token5, strlen(token5), 0}; + const parser_context_t context6 = {(const uint8_t *) token6, strlen(token6), 0}; + const parser_context_t context7 = {(const uint8_t *) token7, strlen(token7), 0}; + flow_argument_list_t new_arg_list = { + context0, + {context2, context3, context4, context5, context6, context7}, + 6}; + memcpy(&arg_list, &new_arg_list, sizeof(arg_list)); + + const parser_context_t context0b = {(const uint8_t *) dummy, strlen(dummy), 0}; + const parser_context_t context2b = {(const uint8_t *) token2b, strlen(token2b), 0}; + const parser_context_t context3b = {(const uint8_t *) token3b, strlen(token3b), 0}; + const parser_context_t context4b = {(const uint8_t *) token4b, strlen(token4b), 0}; + const parser_context_t context5b = {(const uint8_t *) token5b, strlen(token5b), 0}; + const parser_context_t context6b = {(const uint8_t *) token6b, strlen(token6b), 0}; + const parser_context_t context7b = {(const uint8_t *) token7b, strlen(token7b), 0}; + flow_argument_list_t new_arg_list_b = { + context0b, + {context2b, context3b, context4b, context5b, context6b, context7b}, + 6}; + memcpy(&arg_list_b, &new_arg_list_b, sizeof(arg_list_b)); + + const parser_context_t context0c = {(const uint8_t *) dummy, strlen(dummy), 0}; + const parser_context_t context2c = {(const uint8_t *) token2c, strlen(token2c), 0}; + const parser_context_t context3c = {(const uint8_t *) token3c, strlen(token3c), 0}; + const parser_context_t context4c = {(const uint8_t *) token4c, strlen(token4c), 0}; + const parser_context_t context5c = {(const uint8_t *) token5c, strlen(token5c), 0}; + const parser_context_t context6c = {(const uint8_t *) token6c, strlen(token6c), 0}; + const parser_context_t context7c = {(const uint8_t *) token7c, strlen(token7c), 0}; + flow_argument_list_t new_arg_list_c = { + context0c, + {context2c, context3c, context4c, context5c, context6c, context7c}, + 6}; + memcpy(&arg_list_c, &new_arg_list_c, sizeof(arg_list_c)); +} + +static void test_printArgument(void **state) { + char outValBuf[40]; + uint8_t pageCountVar = 0; + + char ufix64[] = "UFix64"; + parser_error_t err = + parser_printArgument(&arg_list, 4, ufix64, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "545.77"); + assert_int_equal(pageCountVar, 1); + + err = + parser_printArgument(&arg_list_b, 4, ufix64, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "545.77"); + assert_int_equal(pageCountVar, 1); + + char optional[] = "Optional"; + err = + parser_printArgument(&arg_list, 4, optional, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_UNEXPECTED_VALUE); + + err = + parser_printArgument(&arg_list, 0, optional, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_JSON_INVALID); +} + +static void test_printArgumentArray(void **state) { + char outValBuf[40]; + uint8_t pageCountVar = 0; + + parser_error_t err = parser_printArgumentArray(&arg_list, + 5, + 0, + "String", + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 4); + assert_string_equal(outValBuf, "e845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb"); + + pageCountVar = 0; + err = parser_printArgumentArray(&arg_list, + 5, + 0, + "String", + JSMN_STRING, + outValBuf, + 40, + 1, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 4); + assert_string_equal(outValBuf, "29feaeb4559fdb71a97e2fd0438565310e87670"); + + pageCountVar = 0; + err = parser_printArgumentArray(&arg_list, + 5, + 1, + "String", + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 4); + assert_string_equal(outValBuf, "d845b8406e4f43f79d3c1d8cacb3d5f3e7aeedb"); + + err = parser_printArgumentArray(&arg_list, + 5, + 2, + "String", + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_UNEXPECTED_NUMBER_ITEMS); + + err = parser_printArgumentArray(&arg_list, + 5, + 1, + "String", + JSMN_STRING, + outValBuf, + 40, + 6, + &pageCountVar); + assert_int_equal(err, PARSER_DISPLAY_PAGE_OUT_OF_RANGE); + + err = parser_printArgumentArray(&arg_list, + 2, + 0, + "String", + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_UNEXPECTED_VALUE); +} + +static void test_printOptionalArgument(void **state) { + char outValBuf[40]; + uint8_t pageCountVar = 0; + + char ufix64[] = "UFix64"; + parser_error_t err = parser_printOptionalArgument(&arg_list, + 0, + ufix64, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 1); + assert_string_equal(outValBuf, "None"); + + err = parser_printOptionalArgument(&arg_list, + 1, + ufix64, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "545.77"); + assert_int_equal(pageCountVar, 1); + + err = parser_printOptionalArgument(&arg_list_b, + 0, + ufix64, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 1); + assert_string_equal(outValBuf, "None"); + + err = parser_printOptionalArgument(&arg_list_b, + 1, + ufix64, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "545.77"); + assert_int_equal(pageCountVar, 1); + + err = parser_printOptionalArgument(&arg_list, + 4, + ufix64, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_UNEXPECTED_VALUE); +} + +static void test_printEnums(void **state) { + char outValBuf[40]; + uint8_t pageCountVar = 0; + + char uint8[] = "UInt8"; + parser_error_t err = + parser_printHashAlgo(&arg_list_c, 0, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "SHA2 256"); + assert_int_equal(pageCountVar, 1); + + err = parser_printHashAlgo(&arg_list_c, 1, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "SHA2 384"); + assert_int_equal(pageCountVar, 1); + + err = parser_printHashAlgo(&arg_list_c, 2, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "SHA3 256"); + assert_int_equal(pageCountVar, 1); + + err = parser_printHashAlgo(&arg_list_c, 3, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "SHA3 384"); + assert_int_equal(pageCountVar, 1); + + err = parser_printHashAlgo(&arg_list_c, 4, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "KMAC128 BLS BLS12 381"); + assert_int_equal(pageCountVar, 1); + + err = parser_printHashAlgo(&arg_list_c, 5, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "KECCAK 256"); + assert_int_equal(pageCountVar, 1); + + err = parser_printSignatureAlgo(&arg_list_c, + 0, + uint8, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "ECDSA P256"); + assert_int_equal(pageCountVar, 1); + + err = parser_printSignatureAlgo(&arg_list_c, + 1, + uint8, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "ECDSA secp256k1"); + assert_int_equal(pageCountVar, 1); + + err = parser_printSignatureAlgo(&arg_list_c, + 2, + uint8, + JSMN_STRING, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "BLS BLS12 381"); + assert_int_equal(pageCountVar, 1); + + err = parser_printNodeRole(&arg_list_c, 0, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "Collection"); + assert_int_equal(pageCountVar, 1); + + err = parser_printNodeRole(&arg_list_c, 1, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "Consensus"); + assert_int_equal(pageCountVar, 1); + + err = parser_printNodeRole(&arg_list_c, 2, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "Execution"); + assert_int_equal(pageCountVar, 1); + + err = parser_printNodeRole(&arg_list_c, 3, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "Verification"); + assert_int_equal(pageCountVar, 1); + + err = parser_printNodeRole(&arg_list_c, 4, uint8, JSMN_STRING, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outValBuf, "Access"); + assert_int_equal(pageCountVar, 1); +} + +static void test_printArbitraryArgument(void **state) { + char outKeyBuf[20]; + char outValBuf[40]; + uint8_t pageCountVar = 0; + + parser_error_t err = + parser_printArbitraryArgument(&arg_list, 0, outKeyBuf, 40, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 1); + assert_string_equal(outKeyBuf, "1: Optional"); + assert_string_equal(outValBuf, "null"); + + pageCountVar = 0; + err = parser_printArbitraryArgument(&arg_list_b, + 1, + outKeyBuf, + 40, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_int_equal(pageCountVar, 1); + assert_string_equal(outKeyBuf, "2: Optional"); + assert_string_equal(outValBuf, "{\"value\":\"545.77\",\"type\":\"UFix64\"}"); + + pageCountVar = 0; + err = + parser_printArbitraryArgument(&arg_list, 2, outKeyBuf, 40, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outKeyBuf, "3: Optional"); + assert_string_equal(outValBuf, "{\"type\": \"Array\",\"value\":[{\"type\":\"Stri"); + + err = + parser_printArbitraryArgument(&arg_list, 2, outKeyBuf, 40, outValBuf, 40, 1, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outKeyBuf, "3: Optional"); + assert_string_equal(outValBuf, "ng\",\"value\":\"f845b8406e4f43f79d3c1d8cac"); + + pageCountVar = 0; + err = + parser_printArbitraryArgument(&arg_list, 3, outKeyBuf, 40, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outKeyBuf, "4: Optional"); + assert_string_equal(outValBuf, ""); + + pageCountVar = 0; + err = + parser_printArbitraryArgument(&arg_list, 4, outKeyBuf, 40, outValBuf, 40, 0, &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outKeyBuf, "5: UFix64"); + assert_string_equal(outValBuf, "545.77"); + + pageCountVar = 0; + err = parser_printArbitraryArgument(&arg_list_b, + 5, + outKeyBuf, + 40, + outValBuf, + 40, + 0, + &pageCountVar); + assert_int_equal(err, PARSER_OK); + assert_string_equal(outKeyBuf, "6: Array"); + assert_string_equal(outValBuf, ""); +} + +int main() { + createArgList(); + const struct CMUnitTest tests[] = {cmocka_unit_test(test_printArgument), + cmocka_unit_test(test_printOptionalArgument), + cmocka_unit_test(test_printArgumentArray), + cmocka_unit_test(test_printEnums), + cmocka_unit_test(test_printArbitraryArgument)}; + + return cmocka_run_group_tests(tests, NULL, NULL); +} diff --git a/unit-tests/test_rlp.c b/unit-tests/test_rlp.c new file mode 100644 index 00000000..e04ef799 --- /dev/null +++ b/unit-tests/test_rlp.c @@ -0,0 +1,160 @@ +#include +#include +#include +#include +#include +#include + +#include + +#include "hexutils.h" +#include "rlp.h" + +struct RLPValueTestCase { + const char *data; + parser_error_t expectedError; + uint8_t expectedKind; + uint64_t expectedLen; + uint64_t expectedDataOffset; + uint64_t expectedConsumed; +}; + +struct RLPValueTestCase testCases[] = { + {"00", PARSER_OK, RLP_KIND_STRING, 1, 0, 1}, // Byte string (00) + {"01", PARSER_OK, RLP_KIND_STRING, 1, 0, 1}, // Byte string (01) + {"7F", PARSER_OK, RLP_KIND_STRING, 1, 0, 1}, // Byte string (7F) + + {"80", PARSER_OK, RLP_KIND_STRING, 0, 1, 1}, // Empty string ("") + {"83646F67", PARSER_OK, RLP_KIND_STRING, 3, 1, 4}, // Short string ("dog") + + {"B7" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + PARSER_OK, RLP_KIND_STRING, 55, 1, 56}, + {"B90400" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + PARSER_OK, RLP_KIND_STRING, 1024, 3, 1027}, + {"C0", PARSER_OK, RLP_KIND_LIST, 0, 1, 1}, + {"C80000000000000000", PARSER_OK, RLP_KIND_LIST, 8, 1, 9}, + {"F7" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + PARSER_OK, RLP_KIND_LIST, 55, 1, 56}, + {"F90400" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000000000000", + PARSER_OK, RLP_KIND_LIST, 1024, 3, 1027}, + // Varios invalid RLP data examples + {"", PARSER_UNEXPECTED_BUFFER_END, RLP_KIND_UNKNOWN, 0, 0, 0}, + + {"BB", PARSER_UNEXPECTED_BUFFER_END, RLP_KIND_STRING, 0, 0, 0}, + + {"B800", PARSER_OK, RLP_KIND_STRING, 0, 2, 2}, + + {"B900", PARSER_UNEXPECTED_BUFFER_END, RLP_KIND_STRING, 0, 0, 0}, + {"B90000", PARSER_OK, RLP_KIND_STRING, 0, 3, 3}, + {"B9000100", PARSER_OK, RLP_KIND_STRING, 1, 3, 4}, + + {"BA000000", PARSER_RLP_ERROR_INVALID_VALUE_LEN, RLP_KIND_STRING, 0, 0, 0}, + {"BB01000000", PARSER_RLP_ERROR_INVALID_VALUE_LEN, RLP_KIND_STRING, 0, 0, 0} +}; + +static void test_rlp(void **state) { + (void) state; + + const size_t numberOfTests = (sizeof(testCases) / sizeof(*testCases)); + for(int i=0; idata); + parser_context_t ctx_in; + parser_context_t ctx_out; + + ctx_in.buffer = data; + ctx_in.bufferLen = dataSize; + ctx_in.offset = 0; + + rlp_kind_e kind; + uint32_t bytesConsumed; + + parser_error_t err = rlp_decode(&ctx_in, &ctx_out, &kind, &bytesConsumed); + + assert_int_equal(err, testCase->expectedError); + assert_int_equal(kind, testCase->expectedKind); + assert_int_equal(ctx_out.bufferLen, testCase->expectedLen); + assert_int_equal(ctx_out.buffer - ctx_in.buffer, testCase->expectedDataOffset); + assert_int_equal(bytesConsumed, testCase->expectedConsumed); + } +} + +int main() { + const struct CMUnitTest tests[] = {cmocka_unit_test(test_rlp)}; + + return cmocka_run_group_tests(tests, NULL, NULL); +} diff --git a/unit-tests/test_tx_metadata.c b/unit-tests/test_tx_metadata.c new file mode 100644 index 00000000..63fcf11f --- /dev/null +++ b/unit-tests/test_tx_metadata.c @@ -0,0 +1,206 @@ +#include +#include +#include +#include +#include +#include + +#include + +#include "tx_metadata.h" + +const uint8_t TX_METADATA_ADD_NEW_KEY[] = { + 1, //number of hashes + hashes + 0x59, 0x5c, 0x86, 0x56, 0x14, 0x41, 0xb3, 0x2b, 0x2b, 0x91, 0xee, 0x03, 0xf9, 0xe1, 0x0c, 0xa6, 0xef, 0xa7, 0xb4, 0x1b, 0xcc, 0x99, 0x4f, 0x51, 0x31, 0x7e, 0xc0, 0xaa, 0x9d, 0x8f, 0x8a, 0x42, + 'A', 'd', 'd', ' ', 'N', 'e', 'w', ' ', 'K', 'e', 'y', 0, //tx name (to display) + 1, //number of arguments + + //Argument 1 + ARGUMENT_TYPE_NORMAL, + 'P', 'u', 'b', ' ', 'k', 'e', 'y', 0, //arg name (to display) + 0, //argument index + 'S','t', 'r', 'i', 'n', 'g', 0, //expected value type + JSMN_STRING //expected value json token type +}; + +const uint8_t TX_METADATA_ADD_NEW_KEY_ERROR[] = { + 1, //number of hashes + hashes + 0x59, 0x5c, 0x86, 0x56, 0x14, 0x41, 0xb3, 0x2b, 0x2b, 0x91, 0xee, 0x03, 0xf9, 0xe1, 0x0c, 0xa6, 0xef, 0xa7, 0xb4, 0x1b, 0xcc, 0x99, 0x4f, 0x51, 0x31, 0x7e, 0xc0, 0xaa, 0x9d, 0x8f, 0x8a, 0x42, + 'A', 'd', 'd', ' ', 'N', 'e', 'w', ' ', 'K', 'e', 'y', 0, //tx name (to display) + 1, //number of arguments + + //Argument 1 + ARGUMENT_TYPE_NORMAL, + 'P', 'u', 'b', ' ', 'k', 'e', 'y', 0, //arg name (to display) + 0, //argument index + 'S','t', 'r', 'i', 'n', 'g', 0, //expected value type + JSMN_STRING, //expected value json token type + 0 //extra errorous value +}; + +const uint8_t TX_METADATA_TOKEN_TRANSFER[] = { + 3, //number of hashes + hashes + 0xca, 0x80, 0xb6, 0x28, 0xd9, 0x85, 0xb3, 0x58, 0xae, 0x1c, 0xb1, 0x36, 0xbc, 0xd9, 0x76, 0x99, 0x7c, 0x94, 0x2f, 0xa1, 0x0d, 0xba, 0xbf, 0xea, 0xfb, 0x4e, 0x20, 0xfa, 0x66, 0xa5, 0xa5, 0xe2, + 0xd5, 0x6f, 0x4e, 0x1d, 0x23, 0x55, 0xcd, 0xcf, 0xac, 0xfd, 0x01, 0xe4, 0x71, 0x45, 0x9c, 0x6e, 0xf1, 0x68, 0xbf, 0xdf, 0x84, 0x37, 0x1a, 0x68, 0x5c, 0xcf, 0x31, 0xcf, 0x3c, 0xde, 0xdc, 0x2d, + 0x47, 0x85, 0x15, 0x86, 0xd9, 0x62, 0x33, 0x5e, 0x3f, 0x7d, 0x9e, 0x5d, 0x11, 0xa4, 0xc5, 0x27, 0xee, 0x4b, 0x5f, 0xd1, 0xc3, 0x89, 0x5e, 0x3c, 0xe1, 0xb9, 0xc2, 0x82, 0x1f, 0x60, 0xb1, 0x66, + 'T', 'o', 'k', 'e', 'n', ' ', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 0, //tx name (to display) + 6, //number of arguments + + //Argument 1 + ARGUMENT_TYPE_ARRAY, 5, 10, + 'A', 'm', 'o', 'u', 'n', 't', 0, //arg name (to display) + 0, //argument index + 'U','I', 'n', 't', '6', '4', 0, //expected value type + JSMN_STRING, //expected value json token type + + //Argument 2 + ARGUMENT_TYPE_OPTIONAL, + 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 0, //arg name (to display) + 1, //argument index + 'A','d', 'd', 'r', 'e', 's', 's', 0, //expected value type + JSMN_STRING, //expected value json token type + + //Argument 3 + ARGUMENT_TYPE_STRING, + 'A', 'r', 'g', '3', 0, //arg name (to display) + 2, //argument index + + //Argument 4 + ARGUMENT_TYPE_HASH_ALGO, + 'A', 'r', 'g', '4', 0, //arg name (to display) + 3, //argument index + + //Argument 5 + ARGUMENT_TYPE_SIGNATURE_ALGO, + 'A', 'r', 'g', '5', 0, //arg name (to display) + 4, //argument index + + //Argument 6 + ARGUMENT_TYPE_NODE_ROLE, + 'A', 'r', 'g', '6', 0, //arg name (to display) + 5, //argument index +}; + +uint8_t hashAddNewKey[32] = {0x59, 0x5c, 0x86, 0x56, 0x14, 0x41, 0xb3, 0x2b, 0x2b, 0x91, 0xee, 0x03, 0xf9, 0xe1, 0x0c, 0xa6, 0xef, 0xa7, 0xb4, 0x1b, 0xcc, 0x99, 0x4f, 0x51, 0x31, 0x7e, 0xc0, 0xaa, 0x9d, 0x8f, 0x8a, 0x42}; +uint8_t hashTokenTranfer1[32] = {0xca, 0x80, 0xb6, 0x28, 0xd9, 0x85, 0xb3, 0x58, 0xae, 0x1c, 0xb1, 0x36, 0xbc, 0xd9, 0x76, 0x99, 0x7c, 0x94, 0x2f, 0xa1, 0x0d, 0xba, 0xbf, 0xea, 0xfb, 0x4e, 0x20, 0xfa, 0x66, 0xa5, 0xa5, 0xe2}; +uint8_t hashTokenTranfer2[32] = {0xd5, 0x6f, 0x4e, 0x1d, 0x23, 0x55, 0xcd, 0xcf, 0xac, 0xfd, 0x01, 0xe4, 0x71, 0x45, 0x9c, 0x6e, 0xf1, 0x68, 0xbf, 0xdf, 0x84, 0x37, 0x1a, 0x68, 0x5c, 0xcf, 0x31, 0xcf, 0x3c, 0xde, 0xdc, 0x2d}; +uint8_t hashTokenTranfer3[32] = {0x47, 0x85, 0x15, 0x86, 0xd9, 0x62, 0x33, 0x5e, 0x3f, 0x7d, 0x9e, 0x5d, 0x11, 0xa4, 0xc5, 0x27, 0xee, 0x4b, 0x5f, 0xd1, 0xc3, 0x89, 0x5e, 0x3c, 0xe1, 0xb9, 0xc2, 0x82, 0x1f, 0x60, 0xb1, 0x66}; + +static void test_validateScriptHash(void **state) { + (void) state; + parser_error_t err; + err = _validateScriptHash(hashAddNewKey, TX_METADATA_ADD_NEW_KEY, sizeof(TX_METADATA_ADD_NEW_KEY)); + assert_int_equal(err, PARSER_OK); + + err = _validateScriptHash(hashTokenTranfer1, TX_METADATA_ADD_NEW_KEY, sizeof(TX_METADATA_ADD_NEW_KEY)); + assert_int_equal(err, PARSER_UNEXPECTED_SCRIPT); + + err = _validateScriptHash(hashTokenTranfer1, TX_METADATA_TOKEN_TRANSFER, sizeof(TX_METADATA_TOKEN_TRANSFER)); + assert_int_equal(err, PARSER_OK); + + err = _validateScriptHash(hashTokenTranfer2, TX_METADATA_TOKEN_TRANSFER, sizeof(TX_METADATA_TOKEN_TRANSFER)); + assert_int_equal(err, PARSER_OK); + + err = _validateScriptHash(hashTokenTranfer3, TX_METADATA_TOKEN_TRANSFER, sizeof(TX_METADATA_TOKEN_TRANSFER)); + assert_int_equal(err, PARSER_OK); + + err = _validateScriptHash(hashAddNewKey, TX_METADATA_TOKEN_TRANSFER, sizeof(TX_METADATA_TOKEN_TRANSFER)); + assert_int_equal(err, PARSER_UNEXPECTED_SCRIPT); + + err = _validateScriptHash(hashTokenTranfer3, TX_METADATA_ADD_NEW_KEY, 0); + assert_int_equal(err, PARSER_METADATA_ERROR); + + err = _validateScriptHash(hashTokenTranfer3, TX_METADATA_TOKEN_TRANSFER, 3*32); + assert_int_equal(err, PARSER_METADATA_ERROR); + + err = _validateScriptHash(hashTokenTranfer3, TX_METADATA_TOKEN_TRANSFER, 3*32+1); + assert_int_equal(err, PARSER_OK); +} + + +static void test_parseCompressedTxData(void **state) { + parser_error_t err; + parsed_tx_metadata_t result; + err = _parseTxMetadata(hashTokenTranfer1, TX_METADATA_ADD_NEW_KEY, sizeof(TX_METADATA_ADD_NEW_KEY), &result); + assert_int_equal(err, PARSER_UNEXPECTED_SCRIPT); + + err = _parseTxMetadata(hashAddNewKey, TX_METADATA_ADD_NEW_KEY, sizeof(TX_METADATA_ADD_NEW_KEY), &result); + assert_int_equal(err, PARSER_OK); + assert_string_equal(result.txName, "Add New Key"); + assert_int_equal(result.txNameLength, 11); + assert_int_equal(result.argCount, 1); + assert_int_equal(result.arguments[0].argumentType, ARGUMENT_TYPE_NORMAL); + assert_string_equal(result.arguments[0].displayKey, "Pub key"); + assert_int_equal(result.arguments[0].displayKeyLength, 7); + assert_int_equal(result.arguments[0].argumentIndex, 0); + assert_string_equal(result.arguments[0].jsonExpectedType, "String"); + assert_int_equal(result.arguments[0].jsonExpectedTypeLength, 6); + assert_int_equal(result.arguments[0].jsonExpectedKind, JSMN_STRING); + + err = _parseTxMetadata(hashTokenTranfer3, TX_METADATA_TOKEN_TRANSFER, sizeof(TX_METADATA_TOKEN_TRANSFER), &result); + assert_int_equal(err, PARSER_OK); + assert_string_equal(result.txName, "Token Transfer"); + assert_int_equal(result.txNameLength, 14); + assert_int_equal(result.argCount, 6); + + assert_int_equal(result.arguments[0].argumentType, ARGUMENT_TYPE_ARRAY); + assert_int_equal(result.arguments[0].arrayMinElements, 5); + assert_int_equal(result.arguments[0].arrayMaxElements, 10); + assert_string_equal(result.arguments[0].displayKey, "Amount"); + assert_int_equal(result.arguments[0].displayKeyLength, 6); + assert_int_equal(result.arguments[0].argumentIndex, 0); + assert_string_equal(result.arguments[0].jsonExpectedType, "UInt64"); + assert_int_equal(result.arguments[0].jsonExpectedTypeLength, 6); + assert_int_equal(result.arguments[0].jsonExpectedKind, JSMN_STRING); + + assert_int_equal(result.arguments[1].argumentType, ARGUMENT_TYPE_OPTIONAL); + assert_string_equal(result.arguments[1].displayKey, "Destination"); + assert_int_equal(result.arguments[1].displayKeyLength, 11); + assert_int_equal(result.arguments[1].argumentIndex, 1); + assert_string_equal(result.arguments[1].jsonExpectedType, "Address"); + assert_int_equal(result.arguments[1].jsonExpectedTypeLength, 7); + assert_int_equal(result.arguments[1].jsonExpectedKind, JSMN_STRING); + + assert_int_equal(result.arguments[2].argumentType, ARGUMENT_TYPE_STRING); + assert_string_equal(result.arguments[2].displayKey, "Arg3"); + assert_int_equal(result.arguments[2].displayKeyLength, 4); + assert_int_equal(result.arguments[2].argumentIndex, 2); + assert_string_equal(result.arguments[2].jsonExpectedType, "String"); + assert_int_equal(result.arguments[2].jsonExpectedTypeLength, 6); + assert_int_equal(result.arguments[2].jsonExpectedKind, JSMN_STRING); + + assert_int_equal(result.arguments[3].argumentType, ARGUMENT_TYPE_HASH_ALGO); + assert_string_equal(result.arguments[3].displayKey, "Arg4"); + assert_int_equal(result.arguments[3].displayKeyLength, 4); + assert_int_equal(result.arguments[3].argumentIndex, 3); + assert_string_equal(result.arguments[3].jsonExpectedType, "UInt8"); + assert_int_equal(result.arguments[3].jsonExpectedTypeLength, 5); + assert_int_equal(result.arguments[3].jsonExpectedKind, JSMN_STRING); + + assert_int_equal(result.arguments[4].argumentType, ARGUMENT_TYPE_SIGNATURE_ALGO); + assert_string_equal(result.arguments[4].displayKey, "Arg5"); + assert_int_equal(result.arguments[4].displayKeyLength, 4); + assert_int_equal(result.arguments[4].argumentIndex, 4); + assert_string_equal(result.arguments[4].jsonExpectedType, "UInt8"); + assert_int_equal(result.arguments[4].jsonExpectedTypeLength, 5); + assert_int_equal(result.arguments[4].jsonExpectedKind, JSMN_STRING); + + assert_int_equal(result.arguments[5].argumentType, ARGUMENT_TYPE_NODE_ROLE); + assert_string_equal(result.arguments[5].displayKey, "Arg6"); + assert_int_equal(result.arguments[5].displayKeyLength, 4); + assert_int_equal(result.arguments[5].argumentIndex, 5); + assert_string_equal(result.arguments[5].jsonExpectedType, "UInt8"); + assert_int_equal(result.arguments[5].jsonExpectedTypeLength, 5); + assert_int_equal(result.arguments[5].jsonExpectedKind, JSMN_STRING); + + err = _parseTxMetadata(hashAddNewKey, TX_METADATA_ADD_NEW_KEY, sizeof(TX_METADATA_ADD_NEW_KEY)-1, &result); + assert_int_equal(err, PARSER_METADATA_ERROR); + err = _parseTxMetadata(hashAddNewKey, TX_METADATA_ADD_NEW_KEY_ERROR, sizeof(TX_METADATA_ADD_NEW_KEY_ERROR), &result); + assert_int_equal(err, PARSER_METADATA_ERROR); +} + +int main() { + const struct CMUnitTest tests[] = {cmocka_unit_test(test_validateScriptHash), cmocka_unit_test(test_parseCompressedTxData)}; + + return cmocka_run_group_tests(tests, NULL, NULL); +} diff --git a/unit-tests/utils/mocks.c b/unit-tests/utils/mocks.c new file mode 100644 index 00000000..d5fe9bf3 --- /dev/null +++ b/unit-tests/utils/mocks.c @@ -0,0 +1,14 @@ +#include +#include + +#define CX_SHA256_SIZE 32 +void sha256(const uint8_t *message, uint16_t messageLen, uint8_t message_digest[CX_SHA256_SIZE]) { + return; +} + +bool app_mode_expert() { + return true; +} + +void zemu_trace(const char *file, uint32_t line) { +}