From e36ee95629d2ca30036c0b574d009333cfeea42a Mon Sep 17 00:00:00 2001 From: gupnik Date: Wed, 5 Feb 2025 18:01:35 +0530 Subject: [PATCH] [Sui]: Adds support for remaining commands/call_args/input_args in raw json (#4252) * [Sui]: Adds support for nested result in raw json * Addresses review comment * Adds missing commands/args * Makes clippy happy * Adds a test for all transactions --- rust/chains/tw_sui/src/transaction/command.rs | 9 + .../tw_sui/src/transaction/raw_types.rs | 216 +++- .../tw_sui/src/transaction/sui_types.rs | 4 + .../src/transaction/transaction_builder.rs | 72 +- .../src/transaction/transaction_data.rs | 3 +- .../tw_sui/tests/aftermath_json_support.rs | 147 +++ .../tw_sui/tests/fixtures/aftermath_tx_2.json | 1123 +++++++++++++++++ .../tw_sui/tests/fixtures/aftermath_tx_3.json | 668 ++++++++++ 8 files changed, 2171 insertions(+), 71 deletions(-) create mode 100644 rust/chains/tw_sui/tests/fixtures/aftermath_tx_2.json create mode 100644 rust/chains/tw_sui/tests/fixtures/aftermath_tx_3.json diff --git a/rust/chains/tw_sui/src/transaction/command.rs b/rust/chains/tw_sui/src/transaction/command.rs index 533c0be3df2..a9e49892fac 100644 --- a/rust/chains/tw_sui/src/transaction/command.rs +++ b/rust/chains/tw_sui/src/transaction/command.rs @@ -7,6 +7,7 @@ use move_core_types::identifier::Identifier; use move_core_types::language_storage::TypeTag; use serde::{Deserialize, Serialize}; +// Taken from here: https://github.com/MystenLabs/sui/blob/93f02057bb55eca407f04f551e6514f123005b65/crates/sui-types/src/transaction.rs#L660 /// A single command in a programmable transaction. #[derive(Debug, Deserialize, Serialize)] pub enum Command { @@ -30,6 +31,14 @@ pub enum Command { /// Given n-values of the same type, it constructs a vector. For non objects or an empty vector, /// the type tag must be specified. MakeMoveVec(Option, Vec), + /// Upgrades a Move package + /// Takes (in order): + /// 1. A vector of serialized modules for the package. + /// 2. A vector of object ids for the transitive dependencies of the new package. + /// 3. The object ID of the package being upgraded. + /// 4. An argument holding the `UpgradeTicket` that must have been produced from an earlier command in the same + /// programmable transaction. + Upgrade(Vec>, Vec, ObjectID, Argument), } impl Command { diff --git a/rust/chains/tw_sui/src/transaction/raw_types.rs b/rust/chains/tw_sui/src/transaction/raw_types.rs index 979161f26de..3d474e4ddfe 100644 --- a/rust/chains/tw_sui/src/transaction/raw_types.rs +++ b/rust/chains/tw_sui/src/transaction/raw_types.rs @@ -1,15 +1,18 @@ +use move_core_types::identifier::Identifier; use move_core_types::language_storage::TypeTag; use serde::{Deserialize, Serialize}; use std::str::FromStr; -use tw_coin_entry::error::prelude::SigningError; +use tw_coin_entry::error::prelude::*; +use tw_coin_entry::error::prelude::{SigningError, SigningErrorType, SigningResult}; use tw_memory::Data; use tw_misc::serde::as_string; use crate::address::SuiAddress; +use super::sui_types::TransactionExpiration; use super::{ - command::Argument, - sui_types::{ObjectArg, ObjectID, SequenceNumber}, + command::{Argument, Command}, + sui_types::{CallArg, ObjectArg, ObjectDigest, ObjectID, ObjectRef, SequenceNumber}, }; #[derive(Debug, Deserialize, Serialize)] @@ -21,6 +24,18 @@ pub struct PaymentConfig { pub digest: String, } +impl TryFrom for ObjectRef { + type Error = SigningError; + + fn try_from(config: PaymentConfig) -> Result { + Ok(( + ObjectID::from_str(&config.object_id)?, + SequenceNumber(config.version), + ObjectDigest::from_str(&config.digest)?, + )) + } +} + #[derive(Debug, Deserialize, Serialize)] pub struct GasConfig { #[serde(with = "as_string")] @@ -32,6 +47,13 @@ pub struct GasConfig { #[derive(Debug, Deserialize, Serialize)] pub enum InputObjectArg { + #[serde(rename_all = "camelCase")] + ImmOrOwned { + object_id: String, + #[serde(with = "as_string")] + version: u64, + digest: String, + }, #[serde(rename_all = "camelCase")] Shared { mutable: bool, @@ -39,6 +61,12 @@ pub enum InputObjectArg { initial_shared_version: u64, object_id: String, }, + #[serde(rename_all = "camelCase")] + Receiving { + digest: String, + version: u64, + object_id: String, + }, } impl TryFrom for ObjectArg { @@ -46,6 +74,15 @@ impl TryFrom for ObjectArg { fn try_from(arg: InputObjectArg) -> Result { match arg { + InputObjectArg::ImmOrOwned { + object_id, + version, + digest, + } => Ok(ObjectArg::ImmOrOwnedObject(( + ObjectID::from_str(&object_id)?, + SequenceNumber(version), + ObjectDigest::from_str(&digest)?, + ))), InputObjectArg::Shared { mutable, initial_shared_version, @@ -55,6 +92,15 @@ impl TryFrom for ObjectArg { initial_shared_version: SequenceNumber(initial_shared_version), mutable, }), + InputObjectArg::Receiving { + digest, + version, + object_id, + } => Ok(ObjectArg::Receiving(( + ObjectID::from_str(&object_id)?, + SequenceNumber(version), + ObjectDigest::from_str(&digest)?, + ))), } } } @@ -65,6 +111,17 @@ pub enum InputArg { Object(InputObjectArg), } +impl TryFrom for CallArg { + type Error = SigningError; + + fn try_from(arg: InputArg) -> Result { + match arg { + InputArg::Pure(data) => Ok(CallArg::Pure(data)), + InputArg::Object(object) => Ok(CallArg::Object(object.try_into()?)), + } + } +} + #[derive(Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct Input { @@ -79,8 +136,17 @@ pub struct Input { #[serde(tag = "kind")] pub enum TransactionArg { GasCoin, - Input { index: u16 }, - Result { index: u16 }, + Input { + index: u16, + }, + Result { + index: u16, + }, + #[serde(rename_all = "camelCase")] + NestedResult { + index: u16, + result_index: u16, + }, } impl From for Argument { @@ -89,6 +155,10 @@ impl From for Argument { TransactionArg::GasCoin => Argument::GasCoin, TransactionArg::Input { index } => Argument::Input(index), TransactionArg::Result { index } => Argument::Result(index), + TransactionArg::NestedResult { + index, + result_index, + } => Argument::NestedResult(index, result_index), } } } @@ -105,10 +175,6 @@ impl From for TypeTag { #[derive(Debug, Deserialize, Serialize)] #[serde(tag = "kind")] pub enum Transaction { - SplitCoins { - coin: TransactionArg, - amounts: Vec, - }, #[serde(rename_all = "camelCase")] MoveCall { target: String, @@ -119,6 +185,136 @@ pub enum Transaction { objects: Vec, address: TransactionArg, }, + SplitCoins { + coin: TransactionArg, + amounts: Vec, + }, + MergeCoins { + destination: TransactionArg, + sources: Vec, + }, + Publish { + modules: Vec, + dependencies: Vec, + }, + #[serde(rename_all = "camelCase")] + MakeMoveVec { + type_tag: Option, + arguments: Vec, + }, + #[serde(rename_all = "camelCase")] + Upgrade { + modules: Vec, + dependencies: Vec, + package_id: String, + ticket: TransactionArg, + }, +} + +impl TryFrom for Command { + type Error = SigningError; + + fn try_from(transaction: Transaction) -> Result { + match transaction { + Transaction::MoveCall { + target, + type_arguments, + arguments, + } => { + let parts: Vec<&str> = target.split("::").collect(); + if parts.len() != 3 { + return SigningError::err(SigningErrorType::Error_invalid_params) + .context("Invalid target format for MoveCall command"); + } + let package = ObjectID::from_str(parts[0]).context("Failed to parse package ID")?; + let module = Identifier::from_str(parts[1]) + .tw_err(|_| SigningErrorType::Error_invalid_params) + .context("Failed to parse module")?; + let function = Identifier::from_str(parts[2]) + .tw_err(|_| SigningErrorType::Error_invalid_params) + .context("Failed to parse function")?; + Ok(Command::move_call( + package, + module, + function, + type_arguments.into_iter().map(|tag| tag.into()).collect(), + arguments + .into_iter() + .map(|argument| argument.into()) + .collect(), + )) + }, + Transaction::TransferObjects { objects, address } => Ok(Command::TransferObjects( + objects.into_iter().map(|object| object.into()).collect(), + address.into(), + )), + Transaction::SplitCoins { coin, amounts } => Ok(Command::SplitCoins( + coin.into(), + amounts.into_iter().map(|amount| amount.into()).collect(), + )), + Transaction::MergeCoins { + destination, + sources, + } => Ok(Command::MergeCoins( + destination.into(), + sources.into_iter().map(|source| source.into()).collect(), + )), + Transaction::Publish { + modules, + dependencies, + } => Ok(Command::Publish( + modules, + dependencies + .into_iter() + .map(|dependency| { + ObjectID::from_str(&dependency).context("Failed to parse object ID") + }) + .collect::>>()?, + )), + Transaction::MakeMoveVec { + type_tag, + arguments, + } => Ok(Command::MakeMoveVec( + type_tag.map(|tag| tag.into()), + arguments + .into_iter() + .map(|argument| argument.into()) + .collect(), + )), + Transaction::Upgrade { + modules, + dependencies, + package_id, + ticket, + } => Ok(Command::Upgrade( + modules, + dependencies + .into_iter() + .map(|dependency| { + ObjectID::from_str(&dependency).context("Failed to parse object ID") + }) + .collect::>>()?, + ObjectID::from_str(&package_id).context("Failed to parse object ID")?, + ticket.into(), + )), + } + } +} + +// Taken from here: https://github.com/MystenLabs/ts-sdks/blob/68e1b649c125f031b72ff7816d1ff653ef47cb53/packages/typescript/src/transactions/data/v1.ts#L271 +#[derive(Debug, Deserialize, Serialize)] +pub enum Expiration { + None(bool), + Epoch(u64), +} + +impl From for TransactionExpiration { + fn from(expiration: Expiration) -> Self { + match expiration { + Expiration::None(_) => TransactionExpiration::None, + Expiration::Epoch(epoch) => TransactionExpiration::Epoch(epoch), + } + } } #[derive(Debug, Deserialize, Serialize)] @@ -126,7 +322,7 @@ pub enum Transaction { pub struct RawTransaction { pub version: u8, pub sender: SuiAddress, - pub expiration: Option, + pub expiration: Option, pub gas_config: GasConfig, pub inputs: Vec, pub transactions: Vec, diff --git a/rust/chains/tw_sui/src/transaction/sui_types.rs b/rust/chains/tw_sui/src/transaction/sui_types.rs index 1948789adf9..4e2f086c50d 100644 --- a/rust/chains/tw_sui/src/transaction/sui_types.rs +++ b/rust/chains/tw_sui/src/transaction/sui_types.rs @@ -61,6 +61,7 @@ impl CallArg { pub const SUI_SYSTEM_MUT: Self = Self::Object(ObjectArg::SUI_SYSTEM_MUT); } +// Taken from here: https://github.com/MystenLabs/sui/blob/93f02057bb55eca407f04f551e6514f123005b65/crates/sui-types/src/transaction.rs#L107 #[derive(Debug, Deserialize, PartialEq, Serialize)] pub enum ObjectArg { // A Move object, either immutable, or owned mutable. @@ -72,6 +73,8 @@ pub enum ObjectArg { initial_shared_version: SequenceNumber, mutable: bool, }, + // A Move object that can be received in this transaction. + Receiving(ObjectRef), } impl ObjectArg { @@ -84,6 +87,7 @@ impl ObjectArg { pub fn id(&self) -> ObjectID { match self { ObjectArg::ImmOrOwnedObject((id, _, _)) | ObjectArg::SharedObject { id, .. } => *id, + ObjectArg::Receiving((id, _, _)) => *id, } } } diff --git a/rust/chains/tw_sui/src/transaction/transaction_builder.rs b/rust/chains/tw_sui/src/transaction/transaction_builder.rs index 71c898cb31e..d61eaf8e2b6 100644 --- a/rust/chains/tw_sui/src/transaction/transaction_builder.rs +++ b/rust/chains/tw_sui/src/transaction/transaction_builder.rs @@ -2,8 +2,6 @@ // // Copyright © 2017 Trust Wallet. -use std::str::FromStr; - use crate::address::SuiAddress; use crate::constants::{ ADD_STAKE_MUL_COIN_FUN_NAME, SUI_SYSTEM_MODULE_NAME, SUI_SYSTEM_PACKAGE_ID, @@ -13,12 +11,9 @@ use crate::transaction::command::Command; use crate::transaction::programmable_transaction::{ ProgrammableTransaction, ProgrammableTransactionBuilder, }; -use crate::transaction::raw_types::{InputArg, RawTransaction, Transaction}; -use crate::transaction::sui_types::{ - CallArg, ObjectArg, ObjectDigest, ObjectID, ObjectRef, SequenceNumber, -}; +use crate::transaction::raw_types::RawTransaction; +use crate::transaction::sui_types::{CallArg, ObjectArg, ObjectRef}; use crate::transaction::transaction_data::{TransactionData, TransactionKind}; -use move_core_types::identifier::Identifier; use tw_coin_entry::error::prelude::*; use tw_encoding::bcs; @@ -189,6 +184,7 @@ impl TransactionBuilder { vec![gas], gas_budget, gas_price, + None, )) } @@ -200,59 +196,21 @@ impl TransactionBuilder { let raw_transaction: RawTransaction = serde_json::from_str(raw_json) .map_err(|e| SigningError::from(e).context("Failed to parse raw JSON"))?; + if raw_transaction.version != 1 { + return SigningError::err(SigningErrorType::Error_invalid_params) + .context("Invalid transaction version. Only version 1 is supported."); + } + let inputs = raw_transaction .inputs .into_iter() - .map(|input| -> SigningResult { - match input.value { - InputArg::Pure(data) => Ok(CallArg::Pure(data)), - InputArg::Object(object) => Ok(CallArg::Object(object.try_into()?)), - } - }) + .map(|input| input.value.try_into()) .collect::>>()?; let commands = raw_transaction .transactions .into_iter() - .map(|transaction| match transaction { - Transaction::SplitCoins { coin, amounts } => Ok(Command::SplitCoins( - coin.into(), - amounts.into_iter().map(|amount| amount.into()).collect(), - )), - Transaction::MoveCall { - target, - type_arguments, - arguments, - } => { - let parts: Vec<&str> = target.split("::").collect(); - if parts.len() != 3 { - return SigningError::err(SigningErrorType::Error_invalid_params) - .context("Invalid target format for MoveCall command"); - } - let package = - ObjectID::from_str(parts[0]).context("Failed to parse package ID")?; - let module = Identifier::from_str(parts[1]) - .tw_err(|_| SigningErrorType::Error_invalid_params) - .context("Failed to parse module")?; - let function = Identifier::from_str(parts[2]) - .tw_err(|_| SigningErrorType::Error_invalid_params) - .context("Failed to parse function")?; - Ok(Command::move_call( - package, - module, - function, - type_arguments.into_iter().map(|tag| tag.into()).collect(), - arguments - .into_iter() - .map(|argument| argument.into()) - .collect(), - )) - }, - Transaction::TransferObjects { objects, address } => Ok(Command::TransferObjects( - objects.into_iter().map(|object| object.into()).collect(), - address.into(), - )), - }) + .map(|transaction| transaction.try_into()) .collect::>>()?; let pt = ProgrammableTransaction { inputs, commands }; @@ -260,14 +218,7 @@ impl TransactionBuilder { .gas_config .payment .into_iter() - .map(|payment| { - Ok(( - ObjectID::from_str(&payment.object_id).context("Failed to parse object ID")?, - SequenceNumber(payment.version), - ObjectDigest::from_str(&payment.digest) - .context("Failed to parse object digest")?, - )) - }) + .map(|payment| payment.try_into()) .collect::>>()?; let gas_budget = if gas_budget != 0 { @@ -288,6 +239,7 @@ impl TransactionBuilder { gas_payments, gas_budget, gas_price, + raw_transaction.expiration.map(|e| e.into()), )) } } diff --git a/rust/chains/tw_sui/src/transaction/transaction_data.rs b/rust/chains/tw_sui/src/transaction/transaction_data.rs index f59bf639290..f96dcb61083 100644 --- a/rust/chains/tw_sui/src/transaction/transaction_data.rs +++ b/rust/chains/tw_sui/src/transaction/transaction_data.rs @@ -25,6 +25,7 @@ impl TransactionData { gas_payment: Vec, gas_budget: u64, gas_price: u64, + expiration: Option, ) -> Self { TransactionData::V1(TransactionDataV1 { kind, @@ -35,7 +36,7 @@ impl TransactionData { payment: gas_payment, budget: gas_budget, }, - expiration: TransactionExpiration::None, + expiration: expiration.unwrap_or(TransactionExpiration::None), }) } diff --git a/rust/chains/tw_sui/tests/aftermath_json_support.rs b/rust/chains/tw_sui/tests/aftermath_json_support.rs index 99bd6f9bd70..3315c9879be 100644 --- a/rust/chains/tw_sui/tests/aftermath_json_support.rs +++ b/rust/chains/tw_sui/tests/aftermath_json_support.rs @@ -15,4 +15,151 @@ fn test_aftermath_json_support() { let expected: serde_json::Value = serde_json::from_str(expected_json).unwrap(); let expected_bytes = expected["serializedTransaction"].as_str().unwrap(); assert_eq!(expected_bytes, bytes); + + let raw_json_2 = include_str!("./fixtures/aftermath_tx_2.json"); + let result_2 = TransactionBuilder::raw_json(raw_json_2, 0, 0); + assert!(result_2.is_ok()); + + let raw_json_3 = include_str!("./fixtures/aftermath_tx_3.json"); + let result_3 = TransactionBuilder::raw_json(raw_json_3, 0, 0); + assert!(result_3.is_ok()); +} + +#[test] +fn test_raw_json_with_invalid_version() { + let raw_json = r#" + { + "version": 2, + "sender": "0x1", + "expiration": null, + "gasConfig": { + "budget": "30216120", + "price": "750", + "payment": [] + }, + "inputs": [], + "transactions": [] + } + "#; + let result = TransactionBuilder::raw_json(raw_json, 0, 0); + assert!(result.is_err()); + assert_eq!( + result.err().unwrap().to_string(), + "Incorrect input parameter\nContext:\n0. Invalid transaction version. Only version 1 is supported." + ); +} + +#[test] +fn test_raw_json_with_epoch_expiration() { + let raw_json = r#" + { + "version": 1, + "sender": "0x1", + "expiration": { + "Epoch": 1 + }, + "gasConfig": { + "budget": "30216120", + "price": "750", + "payment": [] + }, + "inputs": [], + "transactions": [] + } + "#; + let result = TransactionBuilder::raw_json(raw_json, 0, 0); + assert!(result.is_ok()); +} + +#[test] +fn test_raw_json_with_none_expiration() { + let raw_json = r#" + { + "version": 1, + "sender": "0x1", + "expiration": { + "None": true + }, + "gasConfig": { + "budget": "30216120", + "price": "750", + "payment": [] + }, + "inputs": [], + "transactions": [] + } + "#; + let result = TransactionBuilder::raw_json(raw_json, 0, 0); + assert!(result.is_ok()); +} + +#[test] +fn test_raw_json_with_all_transactions() { + let raw_json = r#" + { + "version": 1, + "sender": "0x1", + "expiration": null, + "gasConfig": { + "budget": "30216120", + "price": "750", + "payment": [] + }, + "inputs": [], + "transactions": [ + { + "kind": "MoveCall", + "target": "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a::vaa::parse_and_verify", + "typeArguments": [], + "arguments": [] + }, + { + "kind": "TransferObjects", + "objects": [], + "address": { + "kind": "Input", + "index": 0 + } + }, + { + "kind": "SplitCoins", + "coin": { + "kind": "Input", + "index": 0 + }, + "amounts": [] + }, + { + "kind": "MergeCoins", + "destination": { + "kind": "Input", + "index": 0 + }, + "sources": [] + }, + { + "kind": "Publish", + "modules": [], + "dependencies": [] + }, + { + "kind": "MakeMoveVec", + "typeTag": null, + "arguments": [] + }, + { + "kind": "Upgrade", + "modules": [], + "dependencies": [], + "packageId": "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a", + "ticket": { + "kind": "Input", + "index": 0 + } + } + ] + } + "#; + let result = TransactionBuilder::raw_json(raw_json, 0, 0); + assert!(result.is_ok()); } diff --git a/rust/chains/tw_sui/tests/fixtures/aftermath_tx_2.json b/rust/chains/tw_sui/tests/fixtures/aftermath_tx_2.json new file mode 100644 index 00000000000..57de5bc7e14 --- /dev/null +++ b/rust/chains/tw_sui/tests/fixtures/aftermath_tx_2.json @@ -0,0 +1,1123 @@ +{ + "version": 1, + "sender": "0xa74491c3eb63d605b9f475fa9ae314b57931a0d3271f5247975c325f75de12f2", + "expiration": null, + "gasConfig": { + "budget": "42250120", + "price": "750", + "payment": [ + { + "objectId": "0x03c0ef251a5d20f04ac02184840c93eefeed4827189d54eb3f5e0fc220c6e820", + "version" : "484773573" , + "digest" : "FkDuXomkxpmqCXQsDPMTz8T8DANEvyw4JVkTV2sgPCWN" + } + ] + }, + "inputs": [ + { + "kind": "Input", + "index": 0, + "value": { + "Pure": [64, 66, 15, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 1, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "64", + "objectId": "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 2, + "value": { + "Pure": [ + 184, 7, 1, 0, 0, 0, 4, 13, 0, 103, 122, 200, 136, 164, 66, 181, 206, 157, 210, 142, 33, 176, 227, 205, 57, 32, + 182, 207, 7, 230, 115, 187, 244, 88, 0, 137, 42, 237, 198, 225, 141, 40, 49, 160, 26, 244, 153, 158, 35, 48, 161, 90, + 204, 23, 122, 149, 94, 162, 235, 137, 233, 221, 146, 33, 82, 108, 231, 123, 108, 140, 110, 132, 15, 0, 2, 1, 209, 70, + 158, 247, 253, 105, 5, 241, 168, 0, 171, 140, 70, 238, 154, 201, 26, 83, 164, 206, 6, 57, 58, 157, 57, 186, 126, 112, + 167, 142, 244, 110, 103, 176, 11, 173, 252, 24, 101, 60, 39, 27, 22, 158, 179, 218, 201, 221, 223, 216, 213, 17, 244, 209, + 22, 58, 242, 3, 52, 132, 29, 113, 253, 1, 3, 201, 174, 196, 23, 86, 102, 206, 12, 251, 233, 198, 143, 107, 212, 151, + 85, 196, 83, 89, 178, 75, 105, 107, 236, 62, 88, 173, 114, 227, 107, 96, 3, 126, 248, 154, 126, 235, 226, 20, 171, 136, + 214, 37, 114, 97, 140, 196, 34, 111, 78, 238, 202, 142, 220, 206, 245, 19, 47, 222, 74, 207, 245, 214, 32, 0, 4, 25, + 240, 89, 70, 2, 244, 150, 196, 69, 208, 120, 199, 226, 248, 202, 100, 52, 25, 90, 167, 198, 27, 36, 98, 45, 155, 86, + 35, 249, 240, 105, 184, 22, 90, 104, 235, 115, 102, 93, 55, 48, 182, 16, 234, 184, 203, 158, 243, 139, 170, 186, 92, 127, + 117, 202, 151, 82, 230, 2, 59, 84, 154, 196, 245, 1, 6, 242, 25, 244, 87, 25, 80, 229, 47, 172, 222, 61, 38, 135, + 194, 183, 130, 84, 215, 49, 52, 65, 198, 156, 152, 186, 26, 228, 245, 246, 108, 54, 151, 127, 218, 153, 83, 87, 140, 189, + 122, 197, 42, 207, 74, 220, 116, 215, 221, 111, 8, 188, 218, 65, 208, 128, 54, 152, 212, 133, 229, 61, 0, 8, 238, 0, + 8, 140, 155, 171, 82, 61, 99, 249, 246, 19, 213, 160, 57, 35, 207, 5, 169, 204, 134, 175, 45, 90, 102, 155, 49, 209, + 18, 150, 105, 111, 133, 252, 144, 72, 175, 52, 101, 36, 207, 101, 113, 65, 166, 2, 159, 74, 91, 119, 159, 109, 252, 68, + 217, 24, 86, 162, 32, 120, 182, 117, 196, 182, 189, 85, 164, 1, 10, 161, 158, 110, 254, 101, 72, 242, 24, 15, 61, 146, + 239, 151, 26, 64, 237, 204, 86, 191, 195, 79, 193, 149, 214, 45, 49, 114, 101, 3, 225, 233, 0, 35, 31, 22, 217, 8, + 170, 219, 131, 104, 21, 50, 249, 39, 94, 110, 219, 185, 255, 27, 8, 6, 200, 79, 180, 169, 104, 90, 231, 35, 51, 2, + 93, 0, 11, 20, 210, 143, 3, 119, 152, 130, 144, 140, 48, 111, 25, 221, 148, 251, 195, 106, 65, 149, 37, 181, 115, 86, + 247, 23, 101, 178, 169, 237, 178, 236, 5, 8, 39, 165, 65, 218, 213, 211, 136, 144, 10, 232, 248, 142, 43, 170, 61, 227, + 168, 43, 161, 86, 189, 120, 181, 215, 173, 150, 2, 255, 159, 30, 162, 1, 13, 67, 2, 124, 38, 34, 180, 92, 211, 50, + 53, 250, 126, 160, 173, 238, 176, 77, 201, 23, 80, 180, 5, 173, 182, 119, 208, 115, 46, 89, 139, 3, 62, 76, 224, 237, + 147, 65, 166, 32, 23, 16, 143, 227, 182, 127, 90, 111, 67, 161, 117, 171, 155, 214, 254, 82, 16, 48, 139, 3, 175, 123, + 6, 84, 211, 0, 14, 18, 232, 253, 12, 4, 136, 184, 81, 149, 62, 0, 88, 199, 30, 239, 134, 155, 10, 191, 217, 139, + 138, 158, 145, 245, 60, 217, 187, 34, 20, 65, 38, 121, 154, 101, 146, 146, 242, 117, 115, 33, 4, 89, 91, 121, 245, 255, + 125, 39, 189, 218, 26, 45, 66, 175, 143, 210, 29, 232, 81, 244, 199, 27, 252, 1, 15, 216, 125, 227, 201, 190, 118, 175, + 8, 74, 230, 233, 21, 88, 139, 175, 216, 112, 117, 51, 204, 157, 30, 60, 213, 11, 162, 230, 179, 42, 94, 185, 12, 93, + 147, 48, 194, 142, 202, 235, 221, 147, 253, 187, 154, 28, 75, 6, 26, 214, 6, 101, 160, 147, 136, 197, 158, 160, 47, 54, + 180, 46, 108, 177, 22, 1, 16, 12, 29, 141, 132, 224, 123, 32, 224, 109, 240, 137, 177, 1, 65, 195, 190, 197, 104, 37, + 251, 82, 26, 193, 80, 237, 171, 204, 222, 70, 164, 164, 122, 6, 66, 176, 5, 91, 193, 240, 181, 92, 209, 251, 131, 170, + 99, 106, 71, 160, 225, 8, 216, 124, 141, 149, 16, 156, 140, 147, 216, 88, 30, 96, 26, 0, 17, 166, 43, 94, 237, 85, + 82, 211, 69, 2, 255, 171, 211, 25, 164, 251, 190, 174, 68, 241, 137, 47, 41, 243, 128, 74, 170, 148, 22, 46, 161, 154, + 217, 60, 153, 101, 108, 51, 209, 18, 213, 80, 124, 186, 127, 201, 169, 129, 187, 203, 84, 197, 112, 156, 67, 97, 13, 193, + 155, 183, 198, 74, 231, 42, 59, 1, 103, 161, 231, 246, 0, 0, 0, 0, 0, 26, 225, 1, 250, 237, 172, 88, 81, 227, + 43, 155, 35, 181, 249, 65, 26, 140, 43, 172, 74, 174, 62, 212, 221, 123, 129, 29, 209, 167, 46, 164, 170, 113, 0, 0, + 0, 0, 6, 159, 12, 18, 1, 65, 85, 87, 86, 0, 0, 0, 0, 0, 11, 171, 243, 174, 0, 0, 39, 16, 146, 222, + 224, 168, 53, 26, 135, 114, 63, 34, 106, 235, 169, 50, 230, 245, 113, 182, 104, 152 + ] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 4, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "17589382", + "objectId": "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 5, + "value": { + "Pure": [ + 171, 12, 80, 78, 65, 85, 1, 0, 0, 0, 3, 184, 1, 0, 0, 0, 4, 13, 0, 103, 122, 200, 136, 164, 66, 181, + 206, 157, 210, 142, 33, 176, 227, 205, 57, 32, 182, 207, 7, 230, 115, 187, 244, 88, 0, 137, 42, 237, 198, 225, 141, 40, + 49, 160, 26, 244, 153, 158, 35, 48, 161, 90, 204, 23, 122, 149, 94, 162, 235, 137, 233, 221, 146, 33, 82, 108, 231, 123, + 108, 140, 110, 132, 15, 0, 2, 1, 209, 70, 158, 247, 253, 105, 5, 241, 168, 0, 171, 140, 70, 238, 154, 201, 26, 83, + 164, 206, 6, 57, 58, 157, 57, 186, 126, 112, 167, 142, 244, 110, 103, 176, 11, 173, 252, 24, 101, 60, 39, 27, 22, 158, + 179, 218, 201, 221, 223, 216, 213, 17, 244, 209, 22, 58, 242, 3, 52, 132, 29, 113, 253, 1, 3, 201, 174, 196, 23, 86, + 102, 206, 12, 251, 233, 198, 143, 107, 212, 151, 85, 196, 83, 89, 178, 75, 105, 107, 236, 62, 88, 173, 114, 227, 107, 96, + 3, 126, 248, 154, 126, 235, 226, 20, 171, 136, 214, 37, 114, 97, 140, 196, 34, 111, 78, 238, 202, 142, 220, 206, 245, 19, + 47, 222, 74, 207, 245, 214, 32, 0, 4, 25, 240, 89, 70, 2, 244, 150, 196, 69, 208, 120, 199, 226, 248, 202, 100, 52, + 25, 90, 167, 198, 27, 36, 98, 45, 155, 86, 35, 249, 240, 105, 184, 22, 90, 104, 235, 115, 102, 93, 55, 48, 182, 16, + 234, 184, 203, 158, 243, 139, 170, 186, 92, 127, 117, 202, 151, 82, 230, 2, 59, 84, 154, 196, 245, 1, 6, 242, 25, 244, + 87, 25, 80, 229, 47, 172, 222, 61, 38, 135, 194, 183, 130, 84, 215, 49, 52, 65, 198, 156, 152, 186, 26, 228, 245, 246, + 108, 54, 151, 127, 218, 153, 83, 87, 140, 189, 122, 197, 42, 207, 74, 220, 116, 215, 221, 111, 8, 188, 218, 65, 208, 128, + 54, 152, 212, 133, 229, 61, 0, 8, 238, 0, 8, 140, 155, 171, 82, 61, 99, 249, 246, 19, 213, 160, 57, 35, 207, 5, + 169, 204, 134, 175, 45, 90, 102, 155, 49, 209, 18, 150, 105, 111, 133, 252, 144, 72, 175, 52, 101, 36, 207, 101, 113, 65, + 166, 2, 159, 74, 91, 119, 159, 109, 252, 68, 217, 24, 86, 162, 32, 120, 182, 117, 196, 182, 189, 85, 164, 1, 10, 161, + 158, 110, 254, 101, 72, 242, 24, 15, 61, 146, 239, 151, 26, 64, 237, 204, 86, 191, 195, 79, 193, 149, 214, 45, 49, 114, + 101, 3, 225, 233, 0, 35, 31, 22, 217, 8, 170, 219, 131, 104, 21, 50, 249, 39, 94, 110, 219, 185, 255, 27, 8, 6, + 200, 79, 180, 169, 104, 90, 231, 35, 51, 2, 93, 0, 11, 20, 210, 143, 3, 119, 152, 130, 144, 140, 48, 111, 25, 221, + 148, 251, 195, 106, 65, 149, 37, 181, 115, 86, 247, 23, 101, 178, 169, 237, 178, 236, 5, 8, 39, 165, 65, 218, 213, 211, + 136, 144, 10, 232, 248, 142, 43, 170, 61, 227, 168, 43, 161, 86, 189, 120, 181, 215, 173, 150, 2, 255, 159, 30, 162, 1, + 13, 67, 2, 124, 38, 34, 180, 92, 211, 50, 53, 250, 126, 160, 173, 238, 176, 77, 201, 23, 80, 180, 5, 173, 182, 119, + 208, 115, 46, 89, 139, 3, 62, 76, 224, 237, 147, 65, 166, 32, 23, 16, 143, 227, 182, 127, 90, 111, 67, 161, 117, 171, + 155, 214, 254, 82, 16, 48, 139, 3, 175, 123, 6, 84, 211, 0, 14, 18, 232, 253, 12, 4, 136, 184, 81, 149, 62, 0, + 88, 199, 30, 239, 134, 155, 10, 191, 217, 139, 138, 158, 145, 245, 60, 217, 187, 34, 20, 65, 38, 121, 154, 101, 146, 146, + 242, 117, 115, 33, 4, 89, 91, 121, 245, 255, 125, 39, 189, 218, 26, 45, 66, 175, 143, 210, 29, 232, 81, 244, 199, 27, + 252, 1, 15, 216, 125, 227, 201, 190, 118, 175, 8, 74, 230, 233, 21, 88, 139, 175, 216, 112, 117, 51, 204, 157, 30, 60, + 213, 11, 162, 230, 179, 42, 94, 185, 12, 93, 147, 48, 194, 142, 202, 235, 221, 147, 253, 187, 154, 28, 75, 6, 26, 214, + 6, 101, 160, 147, 136, 197, 158, 160, 47, 54, 180, 46, 108, 177, 22, 1, 16, 12, 29, 141, 132, 224, 123, 32, 224, 109, + 240, 137, 177, 1, 65, 195, 190, 197, 104, 37, 251, 82, 26, 193, 80, 237, 171, 204, 222, 70, 164, 164, 122, 6, 66, 176, + 5, 91, 193, 240, 181, 92, 209, 251, 131, 170, 99, 106, 71, 160, 225, 8, 216, 124, 141, 149, 16, 156, 140, 147, 216, 88, + 30, 96, 26, 0, 17, 166, 43, 94, 237, 85, 82, 211, 69, 2, 255, 171, 211, 25, 164, 251, 190, 174, 68, 241, 137, 47, + 41, 243, 128, 74, 170, 148, 22, 46, 161, 154, 217, 60, 153, 101, 108, 51, 209, 18, 213, 80, 124, 186, 127, 201, 169, 129, + 187, 203, 84, 197, 112, 156, 67, 97, 13, 193, 155, 183, 198, 74, 231, 42, 59, 1, 103, 161, 231, 246, 0, 0, 0, 0, + 0, 26, 225, 1, 250, 237, 172, 88, 81, 227, 43, 155, 35, 181, 249, 65, 26, 140, 43, 172, 74, 174, 62, 212, 221, 123, + 129, 29, 209, 167, 46, 164, 170, 113, 0, 0, 0, 0, 6, 159, 12, 18, 1, 65, 85, 87, 86, 0, 0, 0, 0, 0, + 11, 171, 243, 174, 0, 0, 39, 16, 146, 222, 224, 168, 53, 26, 135, 114, 63, 34, 106, 235, 169, 50, 230, 245, 113, 182, + 104, 152, 2, 0, 85, 0, 253, 242, 138, 70, 87, 2, 82, 178, 95, 211, 28, 178, 87, 151, 63, 134, 90, 252, 92, 162, + 243, 32, 67, 158, 69, 217, 94, 3, 148, 188, 115, 130, 0, 0, 0, 0, 5, 246, 164, 130, 0, 0, 0, 0, 0, 3, + 153, 0, 255, 255, 255, 248, 0, 0, 0, 0, 103, 161, 231, 246, 0, 0, 0, 0, 103, 161, 231, 245, 0, 0, 0, 0, + 5, 244, 212, 217, 0, 0, 0, 0, 0, 3, 14, 188, 11, 28, 210, 146, 128, 137, 242, 111, 196, 127, 237, 57, 95, 217, + 129, 250, 168, 238, 250, 127, 109, 97, 180, 88, 79, 188, 7, 117, 0, 130, 152, 248, 16, 69, 120, 185, 91, 157, 75, 172, + 226, 161, 146, 99, 179, 36, 245, 106, 220, 212, 157, 221, 137, 150, 188, 93, 246, 79, 246, 100, 58, 232, 227, 226, 24, 193, + 185, 146, 51, 88, 202, 92, 145, 191, 168, 137, 220, 4, 106, 148, 182, 24, 140, 187, 95, 134, 138, 83, 191, 250, 74, 182, + 117, 72, 181, 232, 199, 109, 88, 15, 50, 13, 178, 99, 205, 99, 14, 75, 231, 152, 253, 160, 102, 144, 190, 160, 231, 115, + 229, 119, 126, 53, 243, 57, 97, 211, 141, 61, 206, 37, 254, 65, 164, 242, 252, 159, 143, 150, 46, 20, 200, 154, 139, 166, + 108, 103, 227, 202, 246, 188, 57, 199, 231, 116, 0, 112, 47, 158, 217, 135, 29, 215, 227, 146, 13, 91, 70, 204, 29, 2, + 70, 191, 159, 172, 172, 21, 201, 89, 77, 26, 67, 224, 171, 173, 43, 233, 108, 139, 211, 242, 72, 56, 246, 73, 59, 197, + 238, 50, 10, 50, 0, 137, 10, 193, 82, 58, 2, 172, 62, 78, 243, 49, 93, 125, 238, 221, 150, 198, 35, 9, 131, 0, + 85, 0, 234, 160, 32, 198, 28, 196, 121, 113, 40, 19, 70, 28, 225, 83, 137, 74, 150, 166, 192, 11, 33, 237, 12, 252, + 39, 152, 209, 249, 169, 233, 201, 74, 0, 0, 0, 0, 5, 245, 216, 197, 0, 0, 0, 0, 0, 1, 177, 169, 255, 255, + 255, 248, 0, 0, 0, 0, 103, 161, 231, 246, 0, 0, 0, 0, 103, 161, 231, 245, 0, 0, 0, 0, 5, 245, 212, 106, + 0, 0, 0, 0, 0, 1, 189, 38, 11, 105, 160, 123, 90, 115, 174, 36, 136, 238, 249, 191, 65, 5, 107, 220, 14, 188, + 9, 180, 71, 183, 6, 146, 58, 233, 204, 32, 76, 211, 227, 79, 27, 37, 26, 255, 180, 188, 84, 173, 195, 248, 57, 191, + 183, 173, 176, 123, 59, 87, 169, 82, 216, 31, 197, 34, 90, 46, 141, 47, 27, 0, 156, 169, 40, 54, 2, 89, 67, 46, + 188, 63, 138, 89, 205, 1, 55, 8, 75, 5, 73, 102, 86, 25, 89, 178, 51, 62, 220, 178, 93, 235, 86, 149, 170, 28, + 255, 218, 172, 111, 40, 110, 53, 177, 172, 29, 178, 130, 142, 246, 69, 57, 88, 138, 70, 90, 200, 91, 210, 96, 200, 33, + 113, 49, 199, 58, 174, 112, 22, 177, 238, 102, 218, 251, 98, 177, 54, 167, 131, 231, 84, 154, 139, 166, 108, 103, 227, 202, + 246, 188, 57, 199, 231, 116, 0, 112, 47, 158, 217, 135, 29, 215, 227, 146, 13, 91, 70, 204, 29, 2, 70, 191, 159, 172, + 172, 21, 201, 89, 77, 26, 67, 224, 171, 173, 43, 233, 108, 139, 211, 242, 72, 56, 246, 73, 59, 197, 238, 50, 10, 50, + 0, 137, 10, 193, 82, 58, 2, 172, 62, 78, 243, 49, 93, 125, 238, 221, 150, 198, 35, 9, 131 + ] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 6, + "value": { + "Pure": [1, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 7, + "value": { + "Pure": [1, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 8, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "339260712", + "objectId": "0x3ef821a54dbdfe3f211b2ff7261dea0f0330c72fd292422ce586e21f43809a56" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 9, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "20120881", + "objectId": "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 10, + "value": { + "Pure": [203, 12, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 11, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x72fbc93a45192357c87557fe73ea62fe5968efb5482834e9243f850377251534" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 12, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x7d84c29a96d66a95a5df71e59e585913aef0bf5872221600dd876d9d60b996ce" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 13, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 14, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 15, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 16, + "value": { + "Pure": [0, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 17, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "228660844", + "objectId": "0x79f4dafe99d43da8b8bbcc76e0f7d0ef38b18791618de7af9e8d04a8ef0227fa" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 18, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1574190", + "objectId": "0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 19, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "101700680", + "objectId": "0x59cf0d333464ad29443d92bfd2ddfd1f794c5830141a5ee4a815d1ef3395bf6c" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 20, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "477312593", + "objectId": "0x13864d6177f914bba3e12c28d0b70a1de0c333ad762788d5ee24ec094057e76b" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 21, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "477312592", + "objectId": "0xb950819c5eba1bb5980f714f2a3b1d8738e3da58a4d9daf5fa21b6c2a7dd1e12" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 22, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "476436439", + "objectId": "0x6e1f8f75b342d41c03cb60424e00b1a141ba71b8cd725f1215cd4240cd2d3df7" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 23, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "477312591", + "objectId": "0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 24, + "value": { + "Pure": [ + 167, 68, 145, 195, 235, 99, 214, 5, 185, 244, 117, 250, 154, 227, 20, 181, 121, 49, 160, 211, 39, 31, 82, 71, 151, 92, + 50, 95, 117, 222, 18, 242 + ] + }, + "type": "pure" + } + ], + "transactions": [ + { + "kind": "SplitCoins", + "coin": {"kind": "GasCoin"}, + "amounts": [ + { + "kind": "Input", + "index": 0, + "value": { + "Pure": [64, 66, 15, 0, 0, 0, 0, 0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a::vaa::parse_and_verify", + "typeArguments": [], + "arguments": [ + { + "kind": "Input", + "index": 1, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "64", + "objectId": "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 2, + "value": { + "Pure": [ + 184, 7, 1, 0, 0, 0, 4, 13, 0, 103, 122, 200, 136, 164, 66, 181, 206, 157, 210, 142, 33, 176, 227, 205, + 57, 32, 182, 207, 7, 230, 115, 187, 244, 88, 0, 137, 42, 237, 198, 225, 141, 40, 49, 160, 26, 244, 153, 158, + 35, 48, 161, 90, 204, 23, 122, 149, 94, 162, 235, 137, 233, 221, 146, 33, 82, 108, 231, 123, 108, 140, 110, 132, + 15, 0, 2, 1, 209, 70, 158, 247, 253, 105, 5, 241, 168, 0, 171, 140, 70, 238, 154, 201, 26, 83, 164, 206, + 6, 57, 58, 157, 57, 186, 126, 112, 167, 142, 244, 110, 103, 176, 11, 173, 252, 24, 101, 60, 39, 27, 22, 158, + 179, 218, 201, 221, 223, 216, 213, 17, 244, 209, 22, 58, 242, 3, 52, 132, 29, 113, 253, 1, 3, 201, 174, 196, + 23, 86, 102, 206, 12, 251, 233, 198, 143, 107, 212, 151, 85, 196, 83, 89, 178, 75, 105, 107, 236, 62, 88, 173, + 114, 227, 107, 96, 3, 126, 248, 154, 126, 235, 226, 20, 171, 136, 214, 37, 114, 97, 140, 196, 34, 111, 78, 238, + 202, 142, 220, 206, 245, 19, 47, 222, 74, 207, 245, 214, 32, 0, 4, 25, 240, 89, 70, 2, 244, 150, 196, 69, + 208, 120, 199, 226, 248, 202, 100, 52, 25, 90, 167, 198, 27, 36, 98, 45, 155, 86, 35, 249, 240, 105, 184, 22, + 90, 104, 235, 115, 102, 93, 55, 48, 182, 16, 234, 184, 203, 158, 243, 139, 170, 186, 92, 127, 117, 202, 151, 82, + 230, 2, 59, 84, 154, 196, 245, 1, 6, 242, 25, 244, 87, 25, 80, 229, 47, 172, 222, 61, 38, 135, 194, 183, + 130, 84, 215, 49, 52, 65, 198, 156, 152, 186, 26, 228, 245, 246, 108, 54, 151, 127, 218, 153, 83, 87, 140, 189, + 122, 197, 42, 207, 74, 220, 116, 215, 221, 111, 8, 188, 218, 65, 208, 128, 54, 152, 212, 133, 229, 61, 0, 8, + 238, 0, 8, 140, 155, 171, 82, 61, 99, 249, 246, 19, 213, 160, 57, 35, 207, 5, 169, 204, 134, 175, 45, 90, + 102, 155, 49, 209, 18, 150, 105, 111, 133, 252, 144, 72, 175, 52, 101, 36, 207, 101, 113, 65, 166, 2, 159, 74, + 91, 119, 159, 109, 252, 68, 217, 24, 86, 162, 32, 120, 182, 117, 196, 182, 189, 85, 164, 1, 10, 161, 158, 110, + 254, 101, 72, 242, 24, 15, 61, 146, 239, 151, 26, 64, 237, 204, 86, 191, 195, 79, 193, 149, 214, 45, 49, 114, + 101, 3, 225, 233, 0, 35, 31, 22, 217, 8, 170, 219, 131, 104, 21, 50, 249, 39, 94, 110, 219, 185, 255, 27, + 8, 6, 200, 79, 180, 169, 104, 90, 231, 35, 51, 2, 93, 0, 11, 20, 210, 143, 3, 119, 152, 130, 144, 140, + 48, 111, 25, 221, 148, 251, 195, 106, 65, 149, 37, 181, 115, 86, 247, 23, 101, 178, 169, 237, 178, 236, 5, 8, + 39, 165, 65, 218, 213, 211, 136, 144, 10, 232, 248, 142, 43, 170, 61, 227, 168, 43, 161, 86, 189, 120, 181, 215, + 173, 150, 2, 255, 159, 30, 162, 1, 13, 67, 2, 124, 38, 34, 180, 92, 211, 50, 53, 250, 126, 160, 173, 238, + 176, 77, 201, 23, 80, 180, 5, 173, 182, 119, 208, 115, 46, 89, 139, 3, 62, 76, 224, 237, 147, 65, 166, 32, + 23, 16, 143, 227, 182, 127, 90, 111, 67, 161, 117, 171, 155, 214, 254, 82, 16, 48, 139, 3, 175, 123, 6, 84, + 211, 0, 14, 18, 232, 253, 12, 4, 136, 184, 81, 149, 62, 0, 88, 199, 30, 239, 134, 155, 10, 191, 217, 139, + 138, 158, 145, 245, 60, 217, 187, 34, 20, 65, 38, 121, 154, 101, 146, 146, 242, 117, 115, 33, 4, 89, 91, 121, + 245, 255, 125, 39, 189, 218, 26, 45, 66, 175, 143, 210, 29, 232, 81, 244, 199, 27, 252, 1, 15, 216, 125, 227, + 201, 190, 118, 175, 8, 74, 230, 233, 21, 88, 139, 175, 216, 112, 117, 51, 204, 157, 30, 60, 213, 11, 162, 230, + 179, 42, 94, 185, 12, 93, 147, 48, 194, 142, 202, 235, 221, 147, 253, 187, 154, 28, 75, 6, 26, 214, 6, 101, + 160, 147, 136, 197, 158, 160, 47, 54, 180, 46, 108, 177, 22, 1, 16, 12, 29, 141, 132, 224, 123, 32, 224, 109, + 240, 137, 177, 1, 65, 195, 190, 197, 104, 37, 251, 82, 26, 193, 80, 237, 171, 204, 222, 70, 164, 164, 122, 6, + 66, 176, 5, 91, 193, 240, 181, 92, 209, 251, 131, 170, 99, 106, 71, 160, 225, 8, 216, 124, 141, 149, 16, 156, + 140, 147, 216, 88, 30, 96, 26, 0, 17, 166, 43, 94, 237, 85, 82, 211, 69, 2, 255, 171, 211, 25, 164, 251, + 190, 174, 68, 241, 137, 47, 41, 243, 128, 74, 170, 148, 22, 46, 161, 154, 217, 60, 153, 101, 108, 51, 209, 18, + 213, 80, 124, 186, 127, 201, 169, 129, 187, 203, 84, 197, 112, 156, 67, 97, 13, 193, 155, 183, 198, 74, 231, 42, + 59, 1, 103, 161, 231, 246, 0, 0, 0, 0, 0, 26, 225, 1, 250, 237, 172, 88, 81, 227, 43, 155, 35, 181, + 249, 65, 26, 140, 43, 172, 74, 174, 62, 212, 221, 123, 129, 29, 209, 167, 46, 164, 170, 113, 0, 0, 0, 0, + 6, 159, 12, 18, 1, 65, 85, 87, 86, 0, 0, 0, 0, 0, 11, 171, 243, 174, 0, 0, 39, 16, 146, 222, + 224, 168, 53, 26, 135, 114, 63, 34, 106, 235, 169, 50, 230, 245, 113, 182, 104, 152 + ] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91::pyth::create_authenticated_price_infos_using_accumulator", + "typeArguments": [], + "arguments": [ + { + "kind": "Input", + "index": 4, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "17589382", + "objectId": "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 5, + "value": { + "Pure": [ + 171, 12, 80, 78, 65, 85, 1, 0, 0, 0, 3, 184, 1, 0, 0, 0, 4, 13, 0, 103, 122, 200, 136, 164, + 66, 181, 206, 157, 210, 142, 33, 176, 227, 205, 57, 32, 182, 207, 7, 230, 115, 187, 244, 88, 0, 137, 42, 237, + 198, 225, 141, 40, 49, 160, 26, 244, 153, 158, 35, 48, 161, 90, 204, 23, 122, 149, 94, 162, 235, 137, 233, 221, + 146, 33, 82, 108, 231, 123, 108, 140, 110, 132, 15, 0, 2, 1, 209, 70, 158, 247, 253, 105, 5, 241, 168, 0, + 171, 140, 70, 238, 154, 201, 26, 83, 164, 206, 6, 57, 58, 157, 57, 186, 126, 112, 167, 142, 244, 110, 103, 176, + 11, 173, 252, 24, 101, 60, 39, 27, 22, 158, 179, 218, 201, 221, 223, 216, 213, 17, 244, 209, 22, 58, 242, 3, + 52, 132, 29, 113, 253, 1, 3, 201, 174, 196, 23, 86, 102, 206, 12, 251, 233, 198, 143, 107, 212, 151, 85, 196, + 83, 89, 178, 75, 105, 107, 236, 62, 88, 173, 114, 227, 107, 96, 3, 126, 248, 154, 126, 235, 226, 20, 171, 136, + 214, 37, 114, 97, 140, 196, 34, 111, 78, 238, 202, 142, 220, 206, 245, 19, 47, 222, 74, 207, 245, 214, 32, 0, + 4, 25, 240, 89, 70, 2, 244, 150, 196, 69, 208, 120, 199, 226, 248, 202, 100, 52, 25, 90, 167, 198, 27, 36, + 98, 45, 155, 86, 35, 249, 240, 105, 184, 22, 90, 104, 235, 115, 102, 93, 55, 48, 182, 16, 234, 184, 203, 158, + 243, 139, 170, 186, 92, 127, 117, 202, 151, 82, 230, 2, 59, 84, 154, 196, 245, 1, 6, 242, 25, 244, 87, 25, + 80, 229, 47, 172, 222, 61, 38, 135, 194, 183, 130, 84, 215, 49, 52, 65, 198, 156, 152, 186, 26, 228, 245, 246, + 108, 54, 151, 127, 218, 153, 83, 87, 140, 189, 122, 197, 42, 207, 74, 220, 116, 215, 221, 111, 8, 188, 218, 65, + 208, 128, 54, 152, 212, 133, 229, 61, 0, 8, 238, 0, 8, 140, 155, 171, 82, 61, 99, 249, 246, 19, 213, 160, + 57, 35, 207, 5, 169, 204, 134, 175, 45, 90, 102, 155, 49, 209, 18, 150, 105, 111, 133, 252, 144, 72, 175, 52, + 101, 36, 207, 101, 113, 65, 166, 2, 159, 74, 91, 119, 159, 109, 252, 68, 217, 24, 86, 162, 32, 120, 182, 117, + 196, 182, 189, 85, 164, 1, 10, 161, 158, 110, 254, 101, 72, 242, 24, 15, 61, 146, 239, 151, 26, 64, 237, 204, + 86, 191, 195, 79, 193, 149, 214, 45, 49, 114, 101, 3, 225, 233, 0, 35, 31, 22, 217, 8, 170, 219, 131, 104, + 21, 50, 249, 39, 94, 110, 219, 185, 255, 27, 8, 6, 200, 79, 180, 169, 104, 90, 231, 35, 51, 2, 93, 0, + 11, 20, 210, 143, 3, 119, 152, 130, 144, 140, 48, 111, 25, 221, 148, 251, 195, 106, 65, 149, 37, 181, 115, 86, + 247, 23, 101, 178, 169, 237, 178, 236, 5, 8, 39, 165, 65, 218, 213, 211, 136, 144, 10, 232, 248, 142, 43, 170, + 61, 227, 168, 43, 161, 86, 189, 120, 181, 215, 173, 150, 2, 255, 159, 30, 162, 1, 13, 67, 2, 124, 38, 34, + 180, 92, 211, 50, 53, 250, 126, 160, 173, 238, 176, 77, 201, 23, 80, 180, 5, 173, 182, 119, 208, 115, 46, 89, + 139, 3, 62, 76, 224, 237, 147, 65, 166, 32, 23, 16, 143, 227, 182, 127, 90, 111, 67, 161, 117, 171, 155, 214, + 254, 82, 16, 48, 139, 3, 175, 123, 6, 84, 211, 0, 14, 18, 232, 253, 12, 4, 136, 184, 81, 149, 62, 0, + 88, 199, 30, 239, 134, 155, 10, 191, 217, 139, 138, 158, 145, 245, 60, 217, 187, 34, 20, 65, 38, 121, 154, 101, + 146, 146, 242, 117, 115, 33, 4, 89, 91, 121, 245, 255, 125, 39, 189, 218, 26, 45, 66, 175, 143, 210, 29, 232, + 81, 244, 199, 27, 252, 1, 15, 216, 125, 227, 201, 190, 118, 175, 8, 74, 230, 233, 21, 88, 139, 175, 216, 112, + 117, 51, 204, 157, 30, 60, 213, 11, 162, 230, 179, 42, 94, 185, 12, 93, 147, 48, 194, 142, 202, 235, 221, 147, + 253, 187, 154, 28, 75, 6, 26, 214, 6, 101, 160, 147, 136, 197, 158, 160, 47, 54, 180, 46, 108, 177, 22, 1, + 16, 12, 29, 141, 132, 224, 123, 32, 224, 109, 240, 137, 177, 1, 65, 195, 190, 197, 104, 37, 251, 82, 26, 193, + 80, 237, 171, 204, 222, 70, 164, 164, 122, 6, 66, 176, 5, 91, 193, 240, 181, 92, 209, 251, 131, 170, 99, 106, + 71, 160, 225, 8, 216, 124, 141, 149, 16, 156, 140, 147, 216, 88, 30, 96, 26, 0, 17, 166, 43, 94, 237, 85, + 82, 211, 69, 2, 255, 171, 211, 25, 164, 251, 190, 174, 68, 241, 137, 47, 41, 243, 128, 74, 170, 148, 22, 46, + 161, 154, 217, 60, 153, 101, 108, 51, 209, 18, 213, 80, 124, 186, 127, 201, 169, 129, 187, 203, 84, 197, 112, 156, + 67, 97, 13, 193, 155, 183, 198, 74, 231, 42, 59, 1, 103, 161, 231, 246, 0, 0, 0, 0, 0, 26, 225, 1, + 250, 237, 172, 88, 81, 227, 43, 155, 35, 181, 249, 65, 26, 140, 43, 172, 74, 174, 62, 212, 221, 123, 129, 29, + 209, 167, 46, 164, 170, 113, 0, 0, 0, 0, 6, 159, 12, 18, 1, 65, 85, 87, 86, 0, 0, 0, 0, 0, + 11, 171, 243, 174, 0, 0, 39, 16, 146, 222, 224, 168, 53, 26, 135, 114, 63, 34, 106, 235, 169, 50, 230, 245, + 113, 182, 104, 152, 2, 0, 85, 0, 253, 242, 138, 70, 87, 2, 82, 178, 95, 211, 28, 178, 87, 151, 63, 134, + 90, 252, 92, 162, 243, 32, 67, 158, 69, 217, 94, 3, 148, 188, 115, 130, 0, 0, 0, 0, 5, 246, 164, 130, + 0, 0, 0, 0, 0, 3, 153, 0, 255, 255, 255, 248, 0, 0, 0, 0, 103, 161, 231, 246, 0, 0, 0, 0, + 103, 161, 231, 245, 0, 0, 0, 0, 5, 244, 212, 217, 0, 0, 0, 0, 0, 3, 14, 188, 11, 28, 210, 146, + 128, 137, 242, 111, 196, 127, 237, 57, 95, 217, 129, 250, 168, 238, 250, 127, 109, 97, 180, 88, 79, 188, 7, 117, + 0, 130, 152, 248, 16, 69, 120, 185, 91, 157, 75, 172, 226, 161, 146, 99, 179, 36, 245, 106, 220, 212, 157, 221, + 137, 150, 188, 93, 246, 79, 246, 100, 58, 232, 227, 226, 24, 193, 185, 146, 51, 88, 202, 92, 145, 191, 168, 137, + 220, 4, 106, 148, 182, 24, 140, 187, 95, 134, 138, 83, 191, 250, 74, 182, 117, 72, 181, 232, 199, 109, 88, 15, + 50, 13, 178, 99, 205, 99, 14, 75, 231, 152, 253, 160, 102, 144, 190, 160, 231, 115, 229, 119, 126, 53, 243, 57, + 97, 211, 141, 61, 206, 37, 254, 65, 164, 242, 252, 159, 143, 150, 46, 20, 200, 154, 139, 166, 108, 103, 227, 202, + 246, 188, 57, 199, 231, 116, 0, 112, 47, 158, 217, 135, 29, 215, 227, 146, 13, 91, 70, 204, 29, 2, 70, 191, + 159, 172, 172, 21, 201, 89, 77, 26, 67, 224, 171, 173, 43, 233, 108, 139, 211, 242, 72, 56, 246, 73, 59, 197, + 238, 50, 10, 50, 0, 137, 10, 193, 82, 58, 2, 172, 62, 78, 243, 49, 93, 125, 238, 221, 150, 198, 35, 9, + 131, 0, 85, 0, 234, 160, 32, 198, 28, 196, 121, 113, 40, 19, 70, 28, 225, 83, 137, 74, 150, 166, 192, 11, + 33, 237, 12, 252, 39, 152, 209, 249, 169, 233, 201, 74, 0, 0, 0, 0, 5, 245, 216, 197, 0, 0, 0, 0, + 0, 1, 177, 169, 255, 255, 255, 248, 0, 0, 0, 0, 103, 161, 231, 246, 0, 0, 0, 0, 103, 161, 231, 245, + 0, 0, 0, 0, 5, 245, 212, 106, 0, 0, 0, 0, 0, 1, 189, 38, 11, 105, 160, 123, 90, 115, 174, 36, + 136, 238, 249, 191, 65, 5, 107, 220, 14, 188, 9, 180, 71, 183, 6, 146, 58, 233, 204, 32, 76, 211, 227, 79, + 27, 37, 26, 255, 180, 188, 84, 173, 195, 248, 57, 191, 183, 173, 176, 123, 59, 87, 169, 82, 216, 31, 197, 34, + 90, 46, 141, 47, 27, 0, 156, 169, 40, 54, 2, 89, 67, 46, 188, 63, 138, 89, 205, 1, 55, 8, 75, 5, + 73, 102, 86, 25, 89, 178, 51, 62, 220, 178, 93, 235, 86, 149, 170, 28, 255, 218, 172, 111, 40, 110, 53, 177, + 172, 29, 178, 130, 142, 246, 69, 57, 88, 138, 70, 90, 200, 91, 210, 96, 200, 33, 113, 49, 199, 58, 174, 112, + 22, 177, 238, 102, 218, 251, 98, 177, 54, 167, 131, 231, 84, 154, 139, 166, 108, 103, 227, 202, 246, 188, 57, 199, + 231, 116, 0, 112, 47, 158, 217, 135, 29, 215, 227, 146, 13, 91, 70, 204, 29, 2, 70, 191, 159, 172, 172, 21, + 201, 89, 77, 26, 67, 224, 171, 173, 43, 233, 108, 139, 211, 242, 72, 56, 246, 73, 59, 197, 238, 50, 10, 50, + 0, 137, 10, 193, 82, 58, 2, 172, 62, 78, 243, 49, 93, 125, 238, 221, 150, 198, 35, 9, 131 + ] + }, + "type": "pure" + }, + {"kind": "Result", "index": 1}, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "SplitCoins", + "coin": {"kind": "GasCoin"}, + "amounts": [ + { + "kind": "Input", + "index": 6, + "value": { + "Pure": [1, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 7, + "value": { + "Pure": [1, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91::pyth::update_single_price_feed", + "typeArguments": [], + "arguments": [ + { + "kind": "Input", + "index": 4, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "17589382", + "objectId": "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 2}, + { + "kind": "Input", + "index": 8, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "339260712", + "objectId": "0x3ef821a54dbdfe3f211b2ff7261dea0f0330c72fd292422ce586e21f43809a56" + } + } + }, + "type": "object" + }, + {"kind": "NestedResult", "index": 3, "resultIndex": 0}, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91::pyth::update_single_price_feed", + "typeArguments": [], + "arguments": [ + { + "kind": "Input", + "index": 4, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "17589382", + "objectId": "0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 4}, + { + "kind": "Input", + "index": 9, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "20120881", + "objectId": "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab" + } + } + }, + "type": "object" + }, + {"kind": "NestedResult", "index": 3, "resultIndex": 1}, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91::hot_potato_vector::destroy", + "typeArguments": ["0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91::price_info::PriceInfo"], + "arguments": [ + {"kind": "Result", "index": 5} + ] + }, + { + "kind": "MoveCall", + "target": "0xa2f06318d797e3a2ba734069165e164870677f705d95d8a18b6d9aabbd588709::router::begin_router_tx_and_collect_fees", + "typeArguments": [ + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" , + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC" + ], + "arguments": [ + {"kind": "Result", "index": 0}, + { + "kind": "Input", + "index": 10, + "value": { + "Pure": [203, 12, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 11, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x72fbc93a45192357c87557fe73ea62fe5968efb5482834e9243f850377251534" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 12, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x7d84c29a96d66a95a5df71e59e585913aef0bf5872221600dd876d9d60b996ce" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 13, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 14, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 15, + "value": { + "Pure": [0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0xa2f06318d797e3a2ba734069165e164870677f705d95d8a18b6d9aabbd588709::router::initiate_path_by_percent", + "typeArguments": ["0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"], + "arguments": [ + {"kind": "Result", "index": 7}, + { + "kind": "Input", + "index": 16, + "value": { + "Pure": [0, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x5fba3716cb50198e2dbbaa07da862441aa38ef7a9d8cb1706287a85477bb3d69::router::swap_b_to_a_by_b", + "typeArguments": [ + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" , + "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK", + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" + ], + "arguments": [ + { + "kind": "Input", + "index": 17, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "228660844", + "objectId": "0x79f4dafe99d43da8b8bbcc76e0f7d0ef38b18791618de7af9e8d04a8ef0227fa" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 7}, + { + "kind": "Input", + "index": 18, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1574190", + "objectId": "0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 19, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "101700680", + "objectId": "0x59cf0d333464ad29443d92bfd2ddfd1f794c5830141a5ee4a815d1ef3395bf6c" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 8}, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x5a6df33a03a69959065b5e87aecac72d0afff893a1923833a77dcfb0d2f42980::pyth::create_deposit_cap", + "typeArguments": [ + "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD", + "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK" + ], + "arguments": [ + { + "kind": "Input", + "index": 20, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "477312593", + "objectId": "0x13864d6177f914bba3e12c28d0b70a1de0c333ad762788d5ee24ec094057e76b" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 21, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "477312592", + "objectId": "0xb950819c5eba1bb5980f714f2a3b1d8738e3da58a4d9daf5fa21b6c2a7dd1e12" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 8, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "339260712", + "objectId": "0x3ef821a54dbdfe3f211b2ff7261dea0f0330c72fd292422ce586e21f43809a56" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x5a6df33a03a69959065b5e87aecac72d0afff893a1923833a77dcfb0d2f42980::pyth::create_withdraw_cap", + "typeArguments": [ + "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD", + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC" + ], + "arguments": [ + { + "kind": "Input", + "index": 20, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "477312593", + "objectId": "0x13864d6177f914bba3e12c28d0b70a1de0c333ad762788d5ee24ec094057e76b" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 21, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "477312592", + "objectId": "0xb950819c5eba1bb5980f714f2a3b1d8738e3da58a4d9daf5fa21b6c2a7dd1e12" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 9, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "20120881", + "objectId": "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 3, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0xb715c9d046d571ce545c5e4b03fffc6edfdb0e400dcf255ce4199d69f2526f44::router::swap", + "typeArguments": [ + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" , + "0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD", + "0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK", + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC" + ], + "arguments": [ + { + "kind": "Input", + "index": 22, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "476436439", + "objectId": "0x6e1f8f75b342d41c03cb60424e00b1a141ba71b8cd725f1215cd4240cd2d3df7" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 7}, + { + "kind": "Input", + "index": 21, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "477312592", + "objectId": "0xb950819c5eba1bb5980f714f2a3b1d8738e3da58a4d9daf5fa21b6c2a7dd1e12" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 23, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "477312591", + "objectId": "0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 10}, + {"kind": "Result", "index": 11}, + {"kind": "Result", "index": 9} + ] + }, + { + "kind": "MoveCall", + "target": "0xa2f06318d797e3a2ba734069165e164870677f705d95d8a18b6d9aabbd588709::router::end_router_tx", + "typeArguments": [ + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" , + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC" + ], + "arguments": [ + {"kind": "Result", "index": 7}, + {"kind": "Result", "index": 12} + ] + }, + { + "kind": "TransferObjects", + "objects": [ + {"kind": "Result", "index": 12} + ], + "address": { + "kind": "Input", + "index": 24, + "value": { + "Pure": [ + 167, 68, 145, 195, 235, 99, 214, 5, 185, 244, 117, 250, 154, 227, 20, 181, 121, 49, 160, 211, 39, 31, 82, 71, 151, + 92, 50, 95, 117, 222, 18, 242 + ] + }, + "type": "pure" + } + } + ] +} diff --git a/rust/chains/tw_sui/tests/fixtures/aftermath_tx_3.json b/rust/chains/tw_sui/tests/fixtures/aftermath_tx_3.json new file mode 100644 index 00000000000..51fbfbc504a --- /dev/null +++ b/rust/chains/tw_sui/tests/fixtures/aftermath_tx_3.json @@ -0,0 +1,668 @@ +{ + "version": 1, + "sender": "0xa74491c3eb63d605b9f475fa9ae314b57931a0d3271f5247975c325f75de12f2", + "expiration": null, + "gasConfig": { + "budget": "30216120", + "price": "750", + "payment": [ + { + "objectId": "0x03c0ef251a5d20f04ac02184840c93eefeed4827189d54eb3f5e0fc220c6e820", + "version" : "489298498" , + "digest" : "EjmZdtbkHMRWMZP4QmR5viu1eAXdM8n7eeXmF8LevKjo" + }, + { + "objectId": "0x22b8900e8dbc0a5f829d2c11ec407901e80e0dbe0fd631015f64eed9d91b187d", + "version" : "489298498" , + "digest" : "HBnDVMSNfnWKAuZvdrrWbphNdXMMbturbKCeN5ASeLL3" + } + ] + }, + "inputs": [ + { + "kind": "Input", + "index": 0, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0x453c5e2afb327083e4c8433c2df8fbc6cee9d18f034e48af3d96382993a66122", + "version" : "488916618" , + "digest" : "3ruaZRSLjur2FPsUmcueZF91umNEckEitmxTNrgHrJFc" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 1, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0x7ed3d9ff0303144ca1d52b5043fc642a82cde137afbd064a31d45708ce0a2b36", + "version" : "484773573" , + "digest" : "GC5nDek1hmMPn3WAFwkotEFP1XBiq8KSp24XBe3nu3Tf" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 2, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0xecea5203ea5ddbb9888b1b52e1c4f4b718ed5a7b3289c947fe1a91a6f4075b6d", + "version" : "489298498" , + "digest" : "D2mFLYgbN6NrXDq9kVudm6k4mRuRJfLC62UL623NtuDb" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 3, + "value": { + "Pure": [240, 186, 4, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 4, + "value": { + "Pure": [103, 24, 251, 4, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 5, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x72fbc93a45192357c87557fe73ea62fe5968efb5482834e9243f850377251534" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 6, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x7d84c29a96d66a95a5df71e59e585913aef0bf5872221600dd876d9d60b996ce" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 7, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 8, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 9, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 10, + "value": { + "Pure": [0, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 11, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "319384337", + "objectId": "0x0ff863a0132cf93bfddff99dbde3ce7e3c645ad37212642cc6aea09b33da50d8" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 12, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "374213340", + "objectId": "0x98d7022e69a62957ace475a964a2b857a09e8dce23cae88ebeec735bc47c3bb7" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 13, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 14, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "304677359", + "objectId": "0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 15, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "228660854", + "objectId": "0xb0aac37113bca6997a68ab591682350b5d709ca9afe6f08ad1114e03f635241d" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 16, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "107639353", + "objectId": "0xeb9b488000386d19539003546beccf8c8a9554a38421a5c022748f46d74a983c" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 17, + "value": { + "Pure": [0, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 18, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1621135", + "objectId": "0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 19, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "228660848", + "objectId": "0xf52903aeb82cc79455d5d48c40c48cc28efd0250dd3976ab6a76557dbcbe80ed" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 20, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "5665244", + "objectId": "0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 21, + "value": { + "Pure": [ + 167, 68, 145, 195, 235, 99, 214, 5, 185, 244, 117, 250, 154, 227, 20, 181, 121, 49, 160, 211, 39, 31, 82, 71, 151, 92, + 50, 95, 117, 222, 18, 242 + ] + }, + "type": "pure" + } + ], + "transactions": [ + { + "kind": "MergeCoins", + "destination": { + "kind": "Input", + "index": 0, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0x453c5e2afb327083e4c8433c2df8fbc6cee9d18f034e48af3d96382993a66122", + "version" : "488916618" , + "digest" : "3ruaZRSLjur2FPsUmcueZF91umNEckEitmxTNrgHrJFc" + } + } + }, + "type": "object" + }, + "sources": [ + { + "kind": "Input", + "index": 1, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0x7ed3d9ff0303144ca1d52b5043fc642a82cde137afbd064a31d45708ce0a2b36", + "version" : "484773573" , + "digest" : "GC5nDek1hmMPn3WAFwkotEFP1XBiq8KSp24XBe3nu3Tf" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 2, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0xecea5203ea5ddbb9888b1b52e1c4f4b718ed5a7b3289c947fe1a91a6f4075b6d", + "version" : "489298498" , + "digest" : "D2mFLYgbN6NrXDq9kVudm6k4mRuRJfLC62UL623NtuDb" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x0000000000000000000000000000000000000000000000000000000000000002::coin::split", + "typeArguments": ["0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"], + "arguments": [ + { + "kind": "Input", + "index": 0, + "value": { + "Object": { + "ImmOrOwned": { + "objectId": "0x453c5e2afb327083e4c8433c2df8fbc6cee9d18f034e48af3d96382993a66122", + "version" : "488916618" , + "digest" : "3ruaZRSLjur2FPsUmcueZF91umNEckEitmxTNrgHrJFc" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 3, + "value": { + "Pure": [240, 186, 4, 0, 0, 0, 0, 0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0xa2f06318d797e3a2ba734069165e164870677f705d95d8a18b6d9aabbd588709::router::begin_router_tx_and_collect_fees", + "typeArguments": [ + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" + ], + "arguments": [ + {"kind": "Result", "index": 1}, + { + "kind": "Input", + "index": 4, + "value": { + "Pure": [103, 24, 251, 4, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 5, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x72fbc93a45192357c87557fe73ea62fe5968efb5482834e9243f850377251534" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 6, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "228660837", + "objectId": "0x7d84c29a96d66a95a5df71e59e585913aef0bf5872221600dd876d9d60b996ce" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 7, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 8, + "value": { + "Pure": [0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 9, + "value": { + "Pure": [0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0xa2f06318d797e3a2ba734069165e164870677f705d95d8a18b6d9aabbd588709::router::initiate_path_by_percent", + "typeArguments": ["0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"], + "arguments": [ + {"kind": "Result", "index": 2}, + { + "kind": "Input", + "index": 10, + "value": { + "Pure": [0, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + } + ] + }, + { + "kind": "MoveCall", + "target": "0xdfbf2afe5b1348bed87fe661b9d6d356ad503bb1d4dabed2218547778c434f3c::router::swap_exact_x_to_y", + "typeArguments": [ + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", + "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN" + ], + "arguments": [ + { + "kind": "Input", + "index": 11, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "319384337", + "objectId": "0x0ff863a0132cf93bfddff99dbde3ce7e3c645ad37212642cc6aea09b33da50d8" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 2}, + { + "kind": "Input", + "index": 12, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "374213340", + "objectId": "0x98d7022e69a62957ace475a964a2b857a09e8dce23cae88ebeec735bc47c3bb7" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 3}, + { + "kind": "Input", + "index": 13, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 14, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "304677359", + "objectId": "0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x2f354e93e638ca66cecba769cd0827b89c84cfe08a0c76a9dd3910b00a55a8bc::router::swap_b_a", + "typeArguments": [ + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC" , + "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN" , + "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN" , + "0x91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1::fee500bps::FEE500BPS" + ], + "arguments": [ + { + "kind": "Input", + "index": 15, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "228660854", + "objectId": "0xb0aac37113bca6997a68ab591682350b5d709ca9afe6f08ad1114e03f635241d" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 2}, + { + "kind": "Input", + "index": 16, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "107639353", + "objectId": "0xeb9b488000386d19539003546beccf8c8a9554a38421a5c022748f46d74a983c" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 4}, + { + "kind": "Input", + "index": 17, + "value": { + "Pure": [0, 0, 0, 0, 0, 0, 0, 0] + }, + "type": "pure" + }, + { + "kind": "Input", + "index": 13, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1", + "objectId": "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + }, + "type": "object" + }, + { + "kind": "Input", + "index": 18, + "value": { + "Object": { + "Shared": { + "mutable": false, + "initialSharedVersion": "1621135", + "objectId": "0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f" + } + } + }, + "type": "object" + } + ] + }, + { + "kind": "MoveCall", + "target": "0x65dbcae1b5ac6ee81849a61db61d69fc275d345214629a4b9ebeb13c8206dd42::router::swap_exact_input_direct", + "typeArguments": [ + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", + "0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN", + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" + ], + "arguments": [ + { + "kind": "Input", + "index": 19, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "228660848", + "objectId": "0xf52903aeb82cc79455d5d48c40c48cc28efd0250dd3976ab6a76557dbcbe80ed" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 2}, + { + "kind": "Input", + "index": 20, + "value": { + "Object": { + "Shared": { + "mutable": true, + "initialSharedVersion": "5665244", + "objectId": "0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511" + } + } + }, + "type": "object" + }, + {"kind": "Result", "index": 5} + ] + }, + { + "kind": "MoveCall", + "target": "0xa2f06318d797e3a2ba734069165e164870677f705d95d8a18b6d9aabbd588709::router::end_router_tx", + "typeArguments": [ + "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC", + "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" + ], + "arguments": [ + {"kind": "Result", "index": 2}, + {"kind": "Result", "index": 6} + ] + }, + { + "kind": "TransferObjects", + "objects": [ + {"kind": "Result", "index": 6} + ], + "address": { + "kind": "Input", + "index": 21, + "value": { + "Pure": [ + 167, 68, 145, 195, 235, 99, 214, 5, 185, 244, 117, 250, 154, 227, 20, 181, 121, 49, 160, 211, 39, 31, 82, 71, 151, + 92, 50, 95, 117, 222, 18, 242 + ] + }, + "type": "pure" + } + } + ] +}