From f332364e0e3ebc039550cd8e2a33327e25d741f4 Mon Sep 17 00:00:00 2001 From: magicalne Date: Mon, 10 Oct 2022 12:04:46 +0800 Subject: [PATCH 1/3] chore: update deps and add multicall3 test case --- c/polyjuice.h | 1 + deps/godwoken-scripts | 2 +- devtools/ci/integration-test.sh | 11 - polyjuice-tests/Cargo.lock | 81 +++++-- polyjuice-tests/Cargo.toml | 14 +- polyjuice-tests/src/ctx.rs | 8 +- .../test_cases/evm-contracts/Multicall3.abi | 1 + .../test_cases/evm-contracts/Multicall3.bin | 1 + .../test_cases/evm-contracts/Multicall3.data | 1 + .../test_cases/evm-contracts/Multicall3.sol | 216 ++++++++++++++++++ polyjuice-tests/src/test_cases/mod.rs | 1 + polyjuice-tests/src/test_cases/multicall3.rs | 34 +++ 12 files changed, 327 insertions(+), 44 deletions(-) create mode 100644 polyjuice-tests/src/test_cases/evm-contracts/Multicall3.abi create mode 100644 polyjuice-tests/src/test_cases/evm-contracts/Multicall3.bin create mode 100644 polyjuice-tests/src/test_cases/evm-contracts/Multicall3.data create mode 100644 polyjuice-tests/src/test_cases/evm-contracts/Multicall3.sol create mode 100644 polyjuice-tests/src/test_cases/multicall3.rs diff --git a/c/polyjuice.h b/c/polyjuice.h index ba699f05..6f419e3c 100644 --- a/c/polyjuice.h +++ b/c/polyjuice.h @@ -1638,6 +1638,7 @@ int run_polyjuice() { } /* Godwoken syscall: SET_RETURN_DATA */ + debug_print_int("set return data size", res.output_size); ret = context.sys_set_program_return_data(&context, (uint8_t *)res.output_data, res.output_size); diff --git a/deps/godwoken-scripts b/deps/godwoken-scripts index d983fb35..231c63de 160000 --- a/deps/godwoken-scripts +++ b/deps/godwoken-scripts @@ -1 +1 @@ -Subproject commit d983fb351410eb6fbe02bb298af909193aeb5f22 +Subproject commit 231c63de31342408fccf83d848e6128e9eeb0f77 diff --git a/devtools/ci/integration-test.sh b/devtools/ci/integration-test.sh index c0a0ddd1..c779c7a5 100644 --- a/devtools/ci/integration-test.sh +++ b/devtools/ci/integration-test.sh @@ -5,16 +5,9 @@ SCRIPT_DIR=$(realpath $(dirname $0)) PROJECT_ROOT=$(dirname $(dirname $SCRIPT_DIR)) TESTS_DIR=$PROJECT_ROOT/polyjuice-tests DEPS_DIR=$PROJECT_ROOT/integration-test -GODWOKEN_DIR=$DEPS_DIR/godwoken ETHEREUM_TEST_DIR=$DEPS_DIR/ethereum-tests mkdir -p $DEPS_DIR -if [ -d "$GODWOKEN_DIR" ] -then - echo "godwoken project already exists" -else - git clone --depth=1 https://github.com/nervosnetwork/godwoken.git $GODWOKEN_DIR -fi # clone ethereum/test if [ -d "$ETHEREUM_TEST_DIR" ] then @@ -22,10 +15,6 @@ then else git clone --depth=1 https://github.com/ethereum/tests.git $ETHEREUM_TEST_DIR fi -cd $GODWOKEN_DIR -git fetch origin develop -git checkout FETCH_HEAD -git submodule update --init --recursive --depth=1 cd $PROJECT_ROOT git submodule update --init --recursive --depth=1 diff --git a/polyjuice-tests/Cargo.lock b/polyjuice-tests/Cargo.lock index 9df33b80..915e80f6 100644 --- a/polyjuice-tests/Cargo.lock +++ b/polyjuice-tests/Cargo.lock @@ -865,7 +865,8 @@ dependencies = [ [[package]] name = "gw-ckb-hardfork" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "arc-swap", "ckb-types", @@ -875,7 +876,8 @@ dependencies = [ [[package]] name = "gw-common" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "cfg-if 0.1.10", "gw-hash", @@ -887,7 +889,8 @@ dependencies = [ [[package]] name = "gw-config" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "ckb-fixed-hash", "gw-jsonrpc-types", @@ -897,7 +900,8 @@ dependencies = [ [[package]] name = "gw-db" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "ckb-rocksdb", "gw-config", @@ -910,7 +914,8 @@ dependencies = [ [[package]] name = "gw-generator" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "anyhow", "arc-swap", @@ -937,14 +942,16 @@ dependencies = [ [[package]] name = "gw-hash" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "blake2b-ref 0.3.1", ] [[package]] name = "gw-jsonrpc-types" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "anyhow", "ckb-fixed-hash", @@ -957,7 +964,8 @@ dependencies = [ [[package]] name = "gw-rpc-client" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "anyhow", "arc-swap", @@ -983,14 +991,14 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tokio-metrics", "toml", "tracing", ] [[package]] name = "gw-store" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "anyhow", "arc-swap", @@ -1006,7 +1014,8 @@ dependencies = [ [[package]] name = "gw-traits" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "gw-common", "gw-db", @@ -1015,7 +1024,8 @@ dependencies = [ [[package]] name = "gw-types" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "cfg-if 0.1.10", "ckb-fixed-hash", @@ -1028,13 +1038,16 @@ dependencies = [ [[package]] name = "gw-utils" -version = "1.5.0" +version = "1.7.0-rc1" +source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" dependencies = [ "anyhow", "ckb-crypto", + "ckb-types", "faster-hex 0.4.1", "gw-common", "gw-config", + "gw-jsonrpc-types", "gw-rpc-client", "gw-store", "gw-types", @@ -1042,6 +1055,8 @@ dependencies = [ "rand 0.8.5", "secp256k1 0.21.3", "sha3", + "tokio", + "zstd", ] [[package]] @@ -2205,17 +2220,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "tokio-metrics" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcb585a0069b53171684e22d5255984ec30d1c7304fd0a4a9a603ffd8c765cdd" -dependencies = [ - "futures-util", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-native-tls" version = "0.3.0" @@ -2548,3 +2552,32 @@ name = "wyz" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.1+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +dependencies = [ + "cc", + "libc", +] diff --git a/polyjuice-tests/Cargo.toml b/polyjuice-tests/Cargo.toml index 3071bab2..1ba60a2c 100644 --- a/polyjuice-tests/Cargo.toml +++ b/polyjuice-tests/Cargo.toml @@ -9,13 +9,13 @@ name = "lib" path = "src/lib.rs" [dependencies] -gw-types = { path = "../integration-test/godwoken/crates/types" } -gw-common = { path = "../integration-test/godwoken/crates/common" } -gw-db = { path = "../integration-test/godwoken/crates/db" } -gw-store = { path = "../integration-test/godwoken/crates/store" } -gw-config = { path = "../integration-test/godwoken/crates/config" } -gw-traits = { path = "../integration-test/godwoken/crates/traits" } -gw-generator = { path = "../integration-test/godwoken/crates/generator"} +gw-types = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-common = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-db = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-store = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-config = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-traits = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-generator = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } ckb-vm = { version = "=0.21.3", features = ["detect-asm"] } ckb-vm-definitions = "=0.21.3" diff --git a/polyjuice-tests/src/ctx.rs b/polyjuice-tests/src/ctx.rs index f12f3dcd..c70c038c 100644 --- a/polyjuice-tests/src/ctx.rs +++ b/polyjuice-tests/src/ctx.rs @@ -81,6 +81,7 @@ pub struct MockChain { block_producer: RegistryAddress, block_number: u64, timestamp: SystemTime, + l2tx_cycle_limit: u64, } impl MockChain { @@ -97,9 +98,14 @@ impl MockChain { block_producer, block_number: 0u64, timestamp, + l2tx_cycle_limit: L2TX_MAX_CYCLES, }) } + pub fn set_max_cycles(&mut self, max_cycles: u64) { + self.l2tx_cycle_limit = max_cycles; + } + fn new_block_info(&self) -> anyhow::Result { let timestamp = self .timestamp @@ -261,7 +267,7 @@ impl MockChain { &self.ctx.state, &block_info, &raw_tx, - L2TX_MAX_CYCLES, + self.l2tx_cycle_limit, None, )?; diff --git a/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.abi b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.abi new file mode 100644 index 00000000..75da07c0 --- /dev/null +++ b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.abi @@ -0,0 +1 @@ +[{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call3[]","name":"calls","type":"tuple[]"}],"name":"aggregate3","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call3Value[]","name":"calls","type":"tuple[]"}],"name":"aggregate3Value","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"tryAggregate","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"}] \ No newline at end of file diff --git a/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.bin b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.bin new file mode 100644 index 00000000..76e31df7 --- /dev/null +++ b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea26469706673582212202dddf3ffddf5753e612e3431c434d34374e366da99b0c9fa976824af55938a8964736f6c634300080c0033 \ No newline at end of file diff --git a/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.data b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.data new file mode 100644 index 00000000..3e140451 --- /dev/null +++ b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.data @@ -0,0 +1 @@ +252dba4200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000112000000000000000000000000000000000000000000000000000000000000224000000000000000000000000000000000000000000000000000000000000022e00000000000000000000000000000000000000000000000000000000000002380000000000000000000000000000000000000000000000000000000000000242000000000000000000000000000000000000000000000000000000000000024c00000000000000000000000000000000000000000000000000000000000002560000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026a0000000000000000000000000000000000000000000000000000000000000274000000000000000000000000000000000000000000000000000000000000027e00000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000292000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000002a600000000000000000000000000000000000000000000000000000000000002b000000000000000000000000000000000000000000000000000000000000002ba00000000000000000000000000000000000000000000000000000000000002c400000000000000000000000000000000000000000000000000000000000002ce00000000000000000000000000000000000000000000000000000000000002d800000000000000000000000000000000000000000000000000000000000002e200000000000000000000000000000000000000000000000000000000000002ec00000000000000000000000000000000000000000000000000000000000002f60000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030a0000000000000000000000000000000000000000000000000000000000000314000000000000000000000000000000000000000000000000000000000000031e00000000000000000000000000000000000000000000000000000000000003280000000000000000000000000000000000000000000000000000000000000332000000000000000000000000000000000000000000000000000000000000033c00000000000000000000000000000000000000000000000000000000000003460000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000035a0000000000000000000000000000000000000000000000000000000000000364000000000000000000000000000000000000000000000000000000000000036e00000000000000000000000000000000000000000000000000000000000003780000000000000000000000000000000000000000000000000000000000000382000000000000000000000000000000000000000000000000000000000000038c000000000000000000000000000000000000000000000000000000000000039600000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003aa00000000000000000000000000000000000000000000000000000000000003b400000000000000000000000000000000000000000000000000000000000003be00000000000000000000000000000000000000000000000000000000000003c800000000000000000000000000000000000000000000000000000000000003d200000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000003e600000000000000000000000000000000000000000000000000000000000003f000000000000000000000000000000000000000000000000000000000000003fa0000000000000000000000000000000000000000000000000000000000000404000000000000000000000000000000000000000000000000000000000000040e00000000000000000000000000000000000000000000000000000000000004180000000000000000000000000000000000000000000000000000000000000422000000000000000000000000000000000000000000000000000000000000042c00000000000000000000000000000000000000000000000000000000000004360000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000044a0000000000000000000000000000000000000000000000000000000000000454000000000000000000000000000000000000000000000000000000000000045e00000000000000000000000000000000000000000000000000000000000004680000000000000000000000000000000000000000000000000000000000000472000000000000000000000000000000000000000000000000000000000000047c00000000000000000000000000000000000000000000000000000000000004860000000000000000000000000000000000000000000000000000000000000490000000000000000000000000000000000000000000000000000000000000049a00000000000000000000000000000000000000000000000000000000000004a400000000000000000000000000000000000000000000000000000000000004ae00000000000000000000000000000000000000000000000000000000000004b800000000000000000000000000000000000000000000000000000000000004c200000000000000000000000000000000000000000000000000000000000004cc00000000000000000000000000000000000000000000000000000000000004d600000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000004ea00000000000000000000000000000000000000000000000000000000000004f400000000000000000000000000000000000000000000000000000000000004fe00000000000000000000000000000000000000000000000000000000000005080000000000000000000000000000000000000000000000000000000000000512000000000000000000000000000000000000000000000000000000000000051c00000000000000000000000000000000000000000000000000000000000005260000000000000000000000000000000000000000000000000000000000000530000000000000000000000000000000000000000000000000000000000000053a0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e00000000000000000000000000000000000000000000000000000000000005580000000000000000000000000000000000000000000000000000000000000562000000000000000000000000000000000000000000000000000000000000056c00000000000000000000000000000000000000000000000000000000000005760000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000594000000000000000000000000000000000000000000000000000000000000059e00000000000000000000000000000000000000000000000000000000000005a800000000000000000000000000000000000000000000000000000000000005b200000000000000000000000000000000000000000000000000000000000005bc00000000000000000000000000000000000000000000000000000000000005c600000000000000000000000000000000000000000000000000000000000005d000000000000000000000000000000000000000000000000000000000000005da00000000000000000000000000000000000000000000000000000000000005e400000000000000000000000000000000000000000000000000000000000005ee00000000000000000000000000000000000000000000000000000000000005f80000000000000000000000000000000000000000000000000000000000000602000000000000000000000000000000000000000000000000000000000000060c00000000000000000000000000000000000000000000000000000000000006160000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000062a0000000000000000000000000000000000000000000000000000000000000634000000000000000000000000000000000000000000000000000000000000063e00000000000000000000000000000000000000000000000000000000000006480000000000000000000000000000000000000000000000000000000000000652000000000000000000000000000000000000000000000000000000000000065c00000000000000000000000000000000000000000000000000000000000006660000000000000000000000000000000000000000000000000000000000000670000000000000000000000000000000000000000000000000000000000000067a0000000000000000000000000000000000000000000000000000000000000684000000000000000000000000000000000000000000000000000000000000068e000000000000000000000000000000000000000000000000000000000000069800000000000000000000000000000000000000000000000000000000000006a200000000000000000000000000000000000000000000000000000000000006ac00000000000000000000000000000000000000000000000000000000000006b600000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000006ca00000000000000000000000000000000000000000000000000000000000006d400000000000000000000000000000000000000000000000000000000000006de00000000000000000000000000000000000000000000000000000000000006e800000000000000000000000000000000000000000000000000000000000006f200000000000000000000000000000000000000000000000000000000000006fc00000000000000000000000000000000000000000000000000000000000007060000000000000000000000000000000000000000000000000000000000000710000000000000000000000000000000000000000000000000000000000000071a0000000000000000000000000000000000000000000000000000000000000724000000000000000000000000000000000000000000000000000000000000072e00000000000000000000000000000000000000000000000000000000000007380000000000000000000000000000000000000000000000000000000000000742000000000000000000000000000000000000000000000000000000000000074c00000000000000000000000000000000000000000000000000000000000007560000000000000000000000000000000000000000000000000000000000000760000000000000000000000000000000000000000000000000000000000000076a0000000000000000000000000000000000000000000000000000000000000774000000000000000000000000000000000000000000000000000000000000077e00000000000000000000000000000000000000000000000000000000000007880000000000000000000000000000000000000000000000000000000000000792000000000000000000000000000000000000000000000000000000000000079c00000000000000000000000000000000000000000000000000000000000007a600000000000000000000000000000000000000000000000000000000000007b000000000000000000000000000000000000000000000000000000000000007ba00000000000000000000000000000000000000000000000000000000000007c400000000000000000000000000000000000000000000000000000000000007ce00000000000000000000000000000000000000000000000000000000000007d800000000000000000000000000000000000000000000000000000000000007e200000000000000000000000000000000000000000000000000000000000007ec00000000000000000000000000000000000000000000000000000000000007f60000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080a0000000000000000000000000000000000000000000000000000000000000814000000000000000000000000000000000000000000000000000000000000081e00000000000000000000000000000000000000000000000000000000000008280000000000000000000000000000000000000000000000000000000000000832000000000000000000000000000000000000000000000000000000000000083c00000000000000000000000000000000000000000000000000000000000008460000000000000000000000000000000000000000000000000000000000000850000000000000000000000000000000000000000000000000000000000000085a0000000000000000000000000000000000000000000000000000000000000864000000000000000000000000000000000000000000000000000000000000086e00000000000000000000000000000000000000000000000000000000000008780000000000000000000000000000000000000000000000000000000000000882000000000000000000000000000000000000000000000000000000000000088c000000000000000000000000000000000000000000000000000000000000089600000000000000000000000000000000000000000000000000000000000008a000000000000000000000000000000000000000000000000000000000000008aa00000000000000000000000000000000000000000000000000000000000008b400000000000000000000000000000000000000000000000000000000000008be00000000000000000000000000000000000000000000000000000000000008c800000000000000000000000000000000000000000000000000000000000008d200000000000000000000000000000000000000000000000000000000000008dc00000000000000000000000000000000000000000000000000000000000008e600000000000000000000000000000000000000000000000000000000000008f000000000000000000000000000000000000000000000000000000000000008fa0000000000000000000000000000000000000000000000000000000000000904000000000000000000000000000000000000000000000000000000000000090e00000000000000000000000000000000000000000000000000000000000009180000000000000000000000000000000000000000000000000000000000000922000000000000000000000000000000000000000000000000000000000000092c00000000000000000000000000000000000000000000000000000000000009360000000000000000000000000000000000000000000000000000000000000940000000000000000000000000000000000000000000000000000000000000094a0000000000000000000000000000000000000000000000000000000000000954000000000000000000000000000000000000000000000000000000000000095e00000000000000000000000000000000000000000000000000000000000009680000000000000000000000000000000000000000000000000000000000000972000000000000000000000000000000000000000000000000000000000000097c00000000000000000000000000000000000000000000000000000000000009860000000000000000000000000000000000000000000000000000000000000990000000000000000000000000000000000000000000000000000000000000099a00000000000000000000000000000000000000000000000000000000000009a400000000000000000000000000000000000000000000000000000000000009ae00000000000000000000000000000000000000000000000000000000000009b800000000000000000000000000000000000000000000000000000000000009c200000000000000000000000000000000000000000000000000000000000009cc00000000000000000000000000000000000000000000000000000000000009d600000000000000000000000000000000000000000000000000000000000009e000000000000000000000000000000000000000000000000000000000000009ea00000000000000000000000000000000000000000000000000000000000009f400000000000000000000000000000000000000000000000000000000000009fe0000000000000000000000000000000000000000000000000000000000000a080000000000000000000000000000000000000000000000000000000000000a120000000000000000000000000000000000000000000000000000000000000a1c0000000000000000000000000000000000000000000000000000000000000a260000000000000000000000000000000000000000000000000000000000000a300000000000000000000000000000000000000000000000000000000000000a3a0000000000000000000000000000000000000000000000000000000000000a440000000000000000000000000000000000000000000000000000000000000a4e0000000000000000000000000000000000000000000000000000000000000a580000000000000000000000000000000000000000000000000000000000000a620000000000000000000000000000000000000000000000000000000000000a6c0000000000000000000000000000000000000000000000000000000000000a760000000000000000000000000000000000000000000000000000000000000a800000000000000000000000000000000000000000000000000000000000000a8a0000000000000000000000000000000000000000000000000000000000000a940000000000000000000000000000000000000000000000000000000000000a9e0000000000000000000000000000000000000000000000000000000000000aa80000000000000000000000000000000000000000000000000000000000000ab20000000000000000000000000000000000000000000000000000000000000abc0000000000000000000000000000000000000000000000000000000000000ac60000000000000000000000000000000000000000000000000000000000000ad00000000000000000000000000000000000000000000000000000000000000ada0000000000000000000000000000000000000000000000000000000000000ae40000000000000000000000000000000000000000000000000000000000000aee0000000000000000000000000000000000000000000000000000000000000af80000000000000000000000000000000000000000000000000000000000000b020000000000000000000000000000000000000000000000000000000000000b0c0000000000000000000000000000000000000000000000000000000000000b160000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000b2a0000000000000000000000000000000000000000000000000000000000000b340000000000000000000000000000000000000000000000000000000000000b3e0000000000000000000000000000000000000000000000000000000000000b480000000000000000000000000000000000000000000000000000000000000b520000000000000000000000000000000000000000000000000000000000000b5c0000000000000000000000000000000000000000000000000000000000000b660000000000000000000000000000000000000000000000000000000000000b700000000000000000000000000000000000000000000000000000000000000b7a0000000000000000000000000000000000000000000000000000000000000b840000000000000000000000000000000000000000000000000000000000000b8e0000000000000000000000000000000000000000000000000000000000000b980000000000000000000000000000000000000000000000000000000000000ba20000000000000000000000000000000000000000000000000000000000000bac0000000000000000000000000000000000000000000000000000000000000bb60000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000bca0000000000000000000000000000000000000000000000000000000000000bd40000000000000000000000000000000000000000000000000000000000000bde0000000000000000000000000000000000000000000000000000000000000be80000000000000000000000000000000000000000000000000000000000000bf20000000000000000000000000000000000000000000000000000000000000bfc0000000000000000000000000000000000000000000000000000000000000c060000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c1a0000000000000000000000000000000000000000000000000000000000000c240000000000000000000000000000000000000000000000000000000000000c2e0000000000000000000000000000000000000000000000000000000000000c380000000000000000000000000000000000000000000000000000000000000c420000000000000000000000000000000000000000000000000000000000000c4c0000000000000000000000000000000000000000000000000000000000000c560000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000c6a0000000000000000000000000000000000000000000000000000000000000c740000000000000000000000000000000000000000000000000000000000000c7e0000000000000000000000000000000000000000000000000000000000000c880000000000000000000000000000000000000000000000000000000000000c920000000000000000000000000000000000000000000000000000000000000c9c0000000000000000000000000000000000000000000000000000000000000ca60000000000000000000000000000000000000000000000000000000000000cb00000000000000000000000000000000000000000000000000000000000000cba0000000000000000000000000000000000000000000000000000000000000cc40000000000000000000000000000000000000000000000000000000000000cce0000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a51f626149879e73513ea7e75e2093e78b2e1e5300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007e0fe22a425ab6f7c049cd1127dd6ede44eced7f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000169554d09504b5e0149dcb5718e93b9d71519db700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000931a41d8980745238ad95b8b5ee5b8394b35bbc400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a6b50cf8d10380433f48a09705d8e9ef4a88da7b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000c4b58c641d996d8ea2930416dbd1c7c31d2b42700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000000ec5130357ee7b728f44feff6803159f2d5296a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000076b40974dc827e8141b188738e6a0963f40e521300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009293e9ca7a27018baf2be7cf5211f70bd77b337100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000827030743fde67e0f6f40d8ac1a695086544cc0a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007897f8faf9f0056e8ffe20d82b5f8f0995f18e8d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000035cbd9fc56cc5dda712c3a88eb6b8f4aa576664d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a7a761442194ec9138b30e5d5d6e601c1ede2bb500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000888ea242131f665d4ce16315079d221c573cfa7400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a1f554c43588ca044b52d30f7821937ddb261c1d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d6dede70561c6ac9a6f75bcb31a20646040f5e1800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002f23faf03246923ac8f7d922867fdc870bf2ca3f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000cba81ee141a7330c313afd6ad625a8a87300df6b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000066c892f6c95e21e4697a150cf3c81e6e40fc65cd00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000008be61de8d54ec91626a000d377b30acf06cde8300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004dcef3b65590bf4fa5bcccda897c7e49d9a0452b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006a4505b26c091973e7df408f9504833ab2bcf92e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000530562c599265478ece29da8a9ad0e679fe6bafa00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000393f158495dd8aebfb34b1766cc1bf3f6803e31100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000064de535afdeb61505a452a0520e81494fe1f014100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009773fc91dfa25da3a27ec4fa263def5c08f8f76900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e92dc0b01290cedd8618b448acc8eda49394b8fe00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000214be4c0b787f2960fa97ee9016902dd4af2fda800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000125285c5a41112a80b90d0cf86f0f507eebead8100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002778f2d5929ae8bc62712b036b07b052941b1e9500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000b70b4c375e0531d4236a3a38f74db97e7e287ebc00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000b744affa063da8a553cc14a56a06ae42426a5d3d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004634d7f7a7a3325d3fb079df4f6d070e8f13804100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000fad19308e1e47b17ccd7f2769968fb8d9c4da37200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c3f6f0fb4cb573db702b153b2a974c2fc54f32bb00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c37324fa7c32f0753711330da07c45ce213d142700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000f677177e8f504dcf2728c5f429675ecd50bcf68a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d8bb322a0b4884971586b5aa4a773b99dac31e9900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c82acb435cf977823143f0108e257f32daab3b8600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ff4abf7750de850d0368def7dab34c53edbe22e500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a0035209231edfe5bf8a0ad70e8b68393df7c30800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000437f57da6b52d222af136fe20fdf538cfaa4e2e600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000fdfb4860a8a037f2ee5839ca4afd0cb2f3428a2900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c554fa6501b52bfe54d4c90a868277db1aaace0d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000944579830bfb3350f11ac2a4215674ce103f59ff00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000001b7f103ceda936e1e3561e5bbb949cd5766748ba00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000cf15117954fdb43a607e8d7fcc229f4336eb600a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000e40d871843bfce6428b09be17ae5f718df1e5ef00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000f035d2912155bf051c2b84d4c37092510fdf40d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006a1de21a60cb7f97692722d945d0e91b4d21b82100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d5a9536f4686cf4ad92fa56c599dfeda37cdee1500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000752ab21d178999789daa8fe8c5e25ab5d2a8e74100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000db91f5797b11e4cac2ae79a269b5054f6ca8631c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e2e2bb6d4b3796eb51a491184838a5ec46bbcda000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006a269070e40f2220d859d3228be5c20495b1939b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000034bcf07478d8b88481f051f7d2042defbedb587a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000b082dae88029c8c104e94b1b2345b5cfed6d5ec700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000096f2c99d1fa058c7e995f951c7b923f7a1c7358600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000844418d59c5fe286df14658ab9b33d79d9522e7c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002a831df675f157fd3a4ece71ee36ebeedc15612500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ddc836aa32f3c09ca5f8e0863c105bf28023fafa00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a6091ef0ffd713062b0a9cb6396c84157cc45abc00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a947674172f90d85167c13fe547f55da49d90c1d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ca5666b7348a57b401b2ad703ee17982dc1f711700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000043de39a33d31428b420bc1f413933572c0c8c3af00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d1976e3c520fd63fa37d1d1e40c6354c3e0e42e500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000baf2442e60a753300918471916d292f90b50f76600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000042a6315998a7c551757483edf6f0d581a3e2778500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000001cc37c6b08107cd8a839bda22bebdfc12034db000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000003d22b9e5ee1b651cb4e38d867b88bcfec4f487900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009377ddde83f46923fdb87b46d00125beb0bef6b800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000185db7893a4e0d302352acb831a00a787321870100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000317cf97ba8ed6c7b4c249e7bce02f75bc38f06b100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000392d3eabfb6f59a3e1d8688d5b7fbfe0e814418b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a79bd0c4fa1eed1305258a18080bd81a527338ce00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d05c6bdfa3e89edd87ef627bbb9dab101b5121f400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ee7fb1d6921b429fba9e155c152ebab4ce41f26d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009977436b2dafdeea62a9f531a4ed2555b21756f400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005b381daac452fd9f04760ead0d751e317385218f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000001a42249125572cc75b90aea024adbacd2192414100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000631a89614f5aa4f00b285d99c410131bfc40bc3b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000045ac003e036dc28daae903b43431a9403f9e3b2e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005b9e82161060edc79b868903f49d48e478628d4800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000fb4c44c307a01623698fecbf74ba0481205eaa800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d87430614570eae152dccae915dbc667259fa80300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000b531b52dd7f676636fa1a15606dc39ff12dbf2c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004581788fb91c215baa3bfcbc35d9e89b1883168900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003c2e7e628804e266a491d2b3c2e8019e31fe161600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005fd287e955c351c58bee459f08886d2b7cfb3c8500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000fe6f4deb351846e7d6bcec0b98d35cb44809e3db00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000fb59cf017bd60c4bcbcb22e25843746284f52d100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005a67d1f83e742f5e7cc273d0482c51d0ee55e2a500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007bd4d3e14c811444c30b645981ebaad68d3344f400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000c9262afff0918db3e82dbe0e786308fd42b572400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000fb12617662d6eb1e74e32a9f1cf8da4455d7164600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000003710e3020576d749df3fc9e2c8c0b8d5296871e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002be6e51502d3787595e31ac216d89ee1ac1f633f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007961ad82cedb5293dbea29a7f4ececb0be6418dc00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002a151a28be284d0955172883d05665ea8024a7a700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ad7b4db923d7aec6b6bf00cd9a61db850f508aee00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c704ff4693fba2bf1650d7565f68b9e2bcb789d100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000014b8f5f96d6027f40cf4c8d33ad24520656f4f0f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e734e846240d8c83d3986db644a4634aebd9cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002dd31b858e54a8c2456f3a89464ad6ea4e18f0cd00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000010a966d474ba517e931ab5302095077c21f12a4c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000011ccf0b4dfdf7a15f1429163f5752277b5883b0400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000258f862821421b43a759ec52ac9c0b39d6fe2cea00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000cf5330d6c4497e94dacc9608dead6643f3ab93ab00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000748a445f8efd0f15b2947bee9f4dbce903cf7df800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000393559cb2f048e0c98ba01be037c599ad8f678cd00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000044eae4d43e1034804c5c6f5a647223bf3ae3bbf00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000678562cace91abe3b46b3dce8d7a74d2aab62c4b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e9ef8ab756a57176ef9efb6d6c0bc3ae8802568500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009d63af6e04862d3c871580a000879975f2e617d800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000019b0fc6b7887b8d6dae35bf341fe691ce9e91c1200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000649aef51c450a155c3496de89fcf22e94431767d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003936730fdc63f83fdae99a8f1ed85001a22ca03900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c95de423f6f9397e62b157a8dd613a4d2175c3d900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000089e8dbe3029090408317981d3a21a9eb7b92329900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003a932c4c9a99febc65cd800d25a3f53142efa60100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c1b2a1e72be0a7d01120c700326348211ecbd63400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c1c1d24b0ab1a1cf08e57956c932b65a0f31769100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000004aa79346b8db6ea8f64ce9846ee427797cc9de00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005451c45120dd74d43a68668c2b23f8ff80582f8000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007eb66637cc9117b1aea56a908b46c46f00a9475200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006483b9dfcdf54dfa9ac6e4ef3a967368f739277200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005565afc99ef40b5ac187fd6938c3c517957f9ab500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006d583edfc0fa8714830eb245947d9a9951c2e62600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006b9f8662f948156dcb5e9d65d41d5d3e6f1db17000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000014efb6d2c9012e5ad73158bd829c9670ddcdaa8b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007b01e19d20d793f656aa35862d138a93ca3e61a900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d3de2f008a4a3ffa8aba4e9a3491fecafe50cc3f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000071c154b9b0145fa729a32f12fe8c0a3ae5a2164300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000085993a1075f8a250e1fbbaee1243a8b58a75061200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003d24ce79ebc8a3e76443718130d66c67633c9ee300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000071c46fef0d58f892581b5787fd3ca52023f5e9fa00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a11818c886e5a4ce6e184dd1c61783cd4718a69500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000b73f19b0b392045e4d2ea8015258b82140a09dfa00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d9f4edca9e6f0247718a170e4e9d3c42326a68a900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000893d10a168aa6eb59ddf6409a008a6f3508f0f3600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000018baddebc680b4ab989a8bbb713f426203642a5b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000f28ab81a63e09ad9353241c0153ffa1b3ab5ea0e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000cee4b0d37545f0da2709af3f36b401fa5c96d7c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000585f8c138325c2e672d3d88871fb40014ea4f28800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000009e0604181053c288d0f89fda70b29e122addd5500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000bc1e08b3931c303d9cf2dbd6a2b342dd16b540c300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a845e7dd4436f843d198419e1fb6ddfabec114d800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000013da2cfe616218968ee1a3bd7fc9442d131e91c700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000001ef80a7e652450e0826b6c9a726635269b89e76f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000049876b6ad9cd52c62db627a666603a5bf7d0f81800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009e2da3d5e10f7c9ae47c352ed13bfe1925d97c7a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000dba2b4ad1d6fee6cf114d29a05c193bcc59aa2c600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000042afafa36e4a59c8c13ef9adc74afb3ebbd1c51d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000b8d1260c440ec51249f97c71b94c2d1da0a2e86b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000bae31cf00a04bab347397e275105cff1300a188000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000072df7f719f9cd421c07761f81484e09cdfa3092900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000329ed3ac0f4953531529b7304d422d73a3a0ee8700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000040e98ca756e410478bca714b6f4c2f4bee8ce64100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006e04e6458d98c6c856c12a4fdda95b5cf94cc07e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000280763fd7e1efed54fc4204e39bb8742f20a81cf00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a4fb863d706b9430c3545044421351a7e6cd07f200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d55d9c99cdcfecd37e4989a4d9fa6829708ec9df00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000cca0c30e8e215e69202139392a49c6e3305938ac00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000001a56cf70e66f0301405092b518614ff78d1b683000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000028386ee96c3e4643c8fe49d96bd9b67a7d51bd8300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000044db60bfde1acd7918755cf9fb6be64cf75ad6900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000677840690414407b316c8cc3acf0c0e7775bbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000068082c55639907faec0d0f9562f2b60df3da1ec000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d29a165bdda28a1c0bb48df63c72870932d640ce00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005851f07210372e75c38075141498841ec94cd15c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004365766eb6aeb80cb3f8f88ee1646644c79ae08000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000065995dd6e42cb671bfdf4e51905fcd42d189c17e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000acdf587fa6ccf5f56ecc3bb73c535dc8b40747400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000087f78380deb64c806d5c8213e43a901e4f04204700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000001ec5ca0b860c768747b37e614cdbd6eba3c7fb0a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000eda55d698b34f34e76a0dc70f1bbae80e8b241cf00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000076ae185d67bd2444b4e0ac8062fc35cdccbf500400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000072675f8be17469c7370cbc20bc8c9d35a617332c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004c469d1316f0c3d288fc69fee4fb3d3498d30fd200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ae4240edd351602a23147cf31233ff7330a0637900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000f4abbedb190e54ef2ccb179a1ef721740706e73100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006d5589b0f27702fa9d4a3fd34036b39041aa6edb00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000e1f6162f64a73d55990450329ba7b969df555e200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000052abbd3a5dccd42fe3e3d482120730d9fe5d1fa100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003d5c6590b37b7399cf7bbce5ae2526a539323aa900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000f9d15556485e343aefe13084b597d2922bdbc40f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000064b876d03d8868665ad70be355c5599c007fb2300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003bc9999bf25252f9b1702763b13418650399d51100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a2970a11a09163ba299cd0442c0957a0c66f0d7f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000008ecd9b7df5ec2747c3c89426f6b5ea815892798500000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007cab27e96749c2793def7d9fbbbc5615afb81d9a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000070bd382d0a00365ea12ee9e654f8d6ae5e59e68700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000ca9a2405ff17a1c58fbe69445171d4813e7295e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000057afb876ded47d99b3180ff310adc93052c7c2b700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000021439f5768c55a5bdabf5bacef82478633eadb9800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000365cd10aa54b27a0f0ae8899acd891b5f38b55d600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c225bbfc2b501c85afa7c165488032930c986c5a00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000002ea1a90768ce14fbbeda1f944698afcac72b97d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a251054a41220a797f447673b2b7400c5b0f44ad00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000dc3be2163e859b28f6182c47e7d298fa95a814dc00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003f1c12137405e2f1e7311749ca0c4fe89c41389100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000944c7961eec89cab19c9fe90b999e057787021c700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a285c60e7452325eca28d6f7f151178994142aef00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000f40e96b1e6bf5e10dcae11b0163998865742f18e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000026b8a62befe2de6a992619412062d098e5448ee100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004097b524fdcf2311579b8c5032acf79b69bb9bcc00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000055ff955f4aee2c6e70a67d389dd525330662936c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000049d329b8464f3110b916670d38d0ebe085e30ae100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c4348d6c32dfe19745e693070471a15d08a4ae8b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c1351a56321065af465a87653d23aeaa138bb0bd00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a8f20f93d29a405652efaccf2e89d959fa2e28e900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000008cb31cde8acd68b157cf7dcd55eab038d8fc45b600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c0eef4249e3cbb6e4b1d4b9e153b89031384c82600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e50333c9c335ac2c989064bf39319afad7a0238100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005a906e6c7cf6821591025b2f3fedfdc8a1cb479000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000c68b06cefdd15955bad1e63aaeb3378c0d0592be00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000358665d86f207d3830caebf15b190e2dbe8d9ef000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000015df069678001111ea22b3d78fb22ffde70374f100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003a91875b73d13fbb1bfcac2111ee54a859ad32fe00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000fcbd71b067910c0948bcb67caa46446302fc8e8300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ccac3437b1965d19da1eef8a7e12e521d1323a0200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002a125baf139e95580bea1d9a1f20dcb26c61ad9700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000005d53c75b572afdf892b8fc1b92703b0f7eedfd8900000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006a3c7c482482b9729f41175a72d45e0a4b39052000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000fe6efd9710a267e2c8b966334de3e8515c15888000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000afd72d1b75b0a5499337bb4f688437d07c72516c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000009beabb045ed9022e7bd884d58f3af44b961d25f100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000007ff5b14e5e06dc62529cf1a43d3000a31b72b6c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a1b33f81d1a9809c814ce300064729ba9d83969400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000bd346c891a7e6eec485a8f15570fa649b9b5fa4800000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e90abd035c53a0d5b142b1117740669bb4492a8300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000205aa11a75d663b849358fa8920f46b3ec70f0100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006e39eba4087c815873a4f8d5eee43fc75dadd58400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000019e3fa6df36ce5dc0505041555a19e8cca7ace2700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000070ffd560581d8c92f3d97751b7038854270ab6cb00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000020b8b4eaefd3b3f0ac8fca87f88951a123b4083600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002f43baf38844040acfcdb9a5465cecf63dbd5c4600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000030c488db1bfef9b52397ed1a29ccfec370efb78000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000001a388428eb726a5552ebce8c8ee31f22b496830e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000ee3968eae8b57f9943415bb3b812e6b1bb9fe8200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006f9a8cdb2754db38fa18e900f289ece74d72e46400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000e1d1d88ec86ae8db2f792333303205f9290fe7b200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ed50d6819d2861c50d63ffdf555d78152010217100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000e881dc9bc98f3a907595c2150e31092df2a586300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007d8e401d9937930237758cb7ec77845817e0188c00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000090ce2cfeb66a2c89d3d979b4ade4d69ed49b107e00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000bfa25dab05d4e187fdddb6b66d3a3ec9e5bf026300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000063bbfab2aa1ff250fb9f3a8426e01ce27b9b4b1d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000f942838fe0d40f0b2492d8dfc9e9b0a5a088dd5600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000000557944764ba6c33b4813f802c3299082bb52e6000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000381f92cabffa90b6fb66ddca41910ba9f0365f0300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002765bb0c43805758e025ab68bde0c67ad2dbe2f300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000002745340c98b3568d7af108166dd4b8f1f3fe23b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000007ecf34e63438b4cbdf1acf481ffe2f74a70b268f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000b8573e543c5a9ae1a2bc6332c9e4596629c2a53f00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000be8b28dcc11ca06df26cc2e95a4adff1823b969100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000003bb261df065c95eff87319b3bad77ff9dfe4eb8000000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000006b4275f528c6594d0ed17a8acfd6cd5de994703b00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d2d1f530f496a83506ff685bc48309dd30e01dab00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000070ccae89a353c81a6191c0e26b1daf0a0f91e55200000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000050023cf67050b806f9874ec4c567eb489e42a5600000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000a8642e5ede8fa6ecd7ff2717b18464e4c8fb9c8400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000024ba30265db8c98bf474d2c78e32dd06c871d39300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000004d63685364555db93fadd3c385b755b0402511ba00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000925243930892405cdc405e51631f05f6c49fbfcf00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000734ebfbd6f76f46810483d58d2fa4fddfb0e7df100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000ee02eba6d2a0b43916b2090fd1ef3ae5ea58fba100000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc00000000000000000000000037a987973ddbddbe775d74608c05ed0e1d074e4400000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d1d525d98e423ba72845c63bc185e6694baa4f2d00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000008e0bff8763adba1efbd138315d79a32c060eb05700000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000d02d4aa0defbeddf288924af4959809a86ee5ef300000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000625ab2e778cc79626072eea8cb472e89f2645acf00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc000000000000000000000000dc67090b6b272aad18f59d961acf0be191f653af00000000000000000000000000000000000000000000000000000000000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244d2301cc0000000000000000000000002c26061486193454ad181ff9877132c3de5caaac00000000000000000000000000000000000000000000000000000000 diff --git a/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.sol b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.sol new file mode 100644 index 00000000..7582ea96 --- /dev/null +++ b/polyjuice-tests/src/test_cases/evm-contracts/Multicall3.sol @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.12; + +/// @title Multicall3 +/// @notice Aggregate results from multiple function calls +/// @dev Multicall & Multicall2 backwards-compatible +/// @dev Aggregate methods are marked `payable` to save 24 gas per call +/// @author Michael Elliot +/// @author Joshua Levine +/// @author Nick Johnson +/// @author Andreas Bigger +/// @author Matt Solomon +contract Multicall3 { + struct Call { + address target; + bytes callData; + } + + struct Call3 { + address target; + bool allowFailure; + bytes callData; + } + + struct Call3Value { + address target; + bool allowFailure; + uint256 value; + bytes callData; + } + + struct Result { + bool success; + bytes returnData; + } + + /// @notice Backwards-compatible call aggregation with Multicall + /// @param calls An array of Call structs + /// @return blockNumber The block number where the calls were executed + /// @return returnData An array of bytes containing the responses + function aggregate(Call[] calldata calls) public payable returns (uint256 blockNumber, bytes[] memory returnData) { + blockNumber = block.number; + uint256 length = calls.length; + returnData = new bytes[](length); + Call calldata call; + for (uint256 i = 0; i < length;) { + bool success; + call = calls[i]; + (success, returnData[i]) = call.target.call(call.callData); + require(success, "Multicall3: call failed"); + unchecked { ++i; } + } + } + + /// @notice Backwards-compatible with Multicall2 + /// @notice Aggregate calls without requiring success + /// @param requireSuccess If true, require all calls to succeed + /// @param calls An array of Call structs + /// @return returnData An array of Result structs + function tryAggregate(bool requireSuccess, Call[] calldata calls) public payable returns (Result[] memory returnData) { + uint256 length = calls.length; + returnData = new Result[](length); + Call calldata call; + for (uint256 i = 0; i < length;) { + Result memory result = returnData[i]; + call = calls[i]; + (result.success, result.returnData) = call.target.call(call.callData); + if (requireSuccess) require(result.success, "Multicall3: call failed"); + unchecked { ++i; } + } + } + + /// @notice Backwards-compatible with Multicall2 + /// @notice Aggregate calls and allow failures using tryAggregate + /// @param calls An array of Call structs + /// @return blockNumber The block number where the calls were executed + /// @return blockHash The hash of the block where the calls were executed + /// @return returnData An array of Result structs + function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls) public payable returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) { + blockNumber = block.number; + blockHash = blockhash(block.number); + returnData = tryAggregate(requireSuccess, calls); + } + + /// @notice Backwards-compatible with Multicall2 + /// @notice Aggregate calls and allow failures using tryAggregate + /// @param calls An array of Call structs + /// @return blockNumber The block number where the calls were executed + /// @return blockHash The hash of the block where the calls were executed + /// @return returnData An array of Result structs + function blockAndAggregate(Call[] calldata calls) public payable returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) { + (blockNumber, blockHash, returnData) = tryBlockAndAggregate(true, calls); + } + + /// @notice Aggregate calls, ensuring each returns success if required + /// @param calls An array of Call3 structs + /// @return returnData An array of Result structs + function aggregate3(Call3[] calldata calls) public payable returns (Result[] memory returnData) { + uint256 length = calls.length; + returnData = new Result[](length); + Call3 calldata calli; + for (uint256 i = 0; i < length;) { + Result memory result = returnData[i]; + calli = calls[i]; + (result.success, result.returnData) = calli.target.call(calli.callData); + assembly { + // Revert if the call fails and failure is not allowed + // `allowFailure := calldataload(add(calli, 0x20))` and `success := mload(result)` + if iszero(or(calldataload(add(calli, 0x20)), mload(result))) { + // set "Error(string)" signature: bytes32(bytes4(keccak256("Error(string)"))) + mstore(0x00, 0x08c379a000000000000000000000000000000000000000000000000000000000) + // set data offset + mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020) + // set length of revert string + mstore(0x24, 0x0000000000000000000000000000000000000000000000000000000000000017) + // set revert string: bytes32(abi.encodePacked("Multicall3: call failed")) + mstore(0x44, 0x4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000) + revert(0x00, 0x64) + } + } + unchecked { ++i; } + } + } + + /// @notice Aggregate calls with a msg value + /// @notice Reverts if msg.value is less than the sum of the call values + /// @param calls An array of Call3Value structs + /// @return returnData An array of Result structs + function aggregate3Value(Call3Value[] calldata calls) public payable returns (Result[] memory returnData) { + uint256 valAccumulator; + uint256 length = calls.length; + returnData = new Result[](length); + Call3Value calldata calli; + for (uint256 i = 0; i < length;) { + Result memory result = returnData[i]; + calli = calls[i]; + uint256 val = calli.value; + // Humanity will be a Type V Kardashev Civilization before this overflows - andreas + // ~ 10^25 Wei in existence << ~ 10^76 size uint fits in a uint256 + unchecked { valAccumulator += val; } + (result.success, result.returnData) = calli.target.call{value: val}(calli.callData); + assembly { + // Revert if the call fails and failure is not allowed + // `allowFailure := calldataload(add(calli, 0x20))` and `success := mload(result)` + if iszero(or(calldataload(add(calli, 0x20)), mload(result))) { + // set "Error(string)" signature: bytes32(bytes4(keccak256("Error(string)"))) + mstore(0x00, 0x08c379a000000000000000000000000000000000000000000000000000000000) + // set data offset + mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020) + // set length of revert string + mstore(0x24, 0x0000000000000000000000000000000000000000000000000000000000000017) + // set revert string: bytes32(abi.encodePacked("Multicall3: call failed")) + mstore(0x44, 0x4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000) + revert(0x00, 0x84) + } + } + unchecked { ++i; } + } + // Finally, make sure the msg.value = SUM(call[0...i].value) + require(msg.value == valAccumulator, "Multicall3: value mismatch"); + } + + /// @notice Returns the block hash for the given block number + /// @param blockNumber The block number + function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) { + blockHash = blockhash(blockNumber); + } + + /// @notice Returns the block number + function getBlockNumber() public view returns (uint256 blockNumber) { + blockNumber = block.number; + } + + /// @notice Returns the block coinbase + function getCurrentBlockCoinbase() public view returns (address coinbase) { + coinbase = block.coinbase; + } + + /// @notice Returns the block difficulty + function getCurrentBlockDifficulty() public view returns (uint256 difficulty) { + difficulty = block.difficulty; + } + + /// @notice Returns the block gas limit + function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) { + gaslimit = block.gaslimit; + } + + /// @notice Returns the block timestamp + function getCurrentBlockTimestamp() public view returns (uint256 timestamp) { + timestamp = block.timestamp; + } + + /// @notice Returns the (ETH) balance of a given address + function getEthBalance(address addr) public view returns (uint256 balance) { + balance = addr.balance; + } + + /// @notice Returns the block hash of the last block + function getLastBlockHash() public view returns (bytes32 blockHash) { + unchecked { + blockHash = blockhash(block.number - 1); + } + } + + /// @notice Gets the base fee of the given block + /// @notice Can revert if the BASEFEE opcode is not implemented by the given chain + function getBasefee() public view returns (uint256 basefee) { + basefee = block.basefee; + } + + /// @notice Returns the chain id + function getChainId() public view returns (uint256 chainid) { + chainid = block.chainid; + } +} diff --git a/polyjuice-tests/src/test_cases/mod.rs b/polyjuice-tests/src/test_cases/mod.rs index 0318256e..adeded3a 100644 --- a/polyjuice-tests/src/test_cases/mod.rs +++ b/polyjuice-tests/src/test_cases/mod.rs @@ -10,6 +10,7 @@ pub(crate) mod fallback_function; pub(crate) mod get_block_info; pub(crate) mod get_chain_id; pub(crate) mod heap_memory; +pub(crate) mod multicall3; pub(crate) mod native_token_transfer; pub(crate) mod parse_log_event; pub(crate) mod recursion_contract; diff --git a/polyjuice-tests/src/test_cases/multicall3.rs b/polyjuice-tests/src/test_cases/multicall3.rs new file mode 100644 index 00000000..11c45aed --- /dev/null +++ b/polyjuice-tests/src/test_cases/multicall3.rs @@ -0,0 +1,34 @@ +use std::convert::TryInto; + +use crate::{ + ctx::MockChain, + helper::{check_cycles, MockContractInfo}, +}; + +const MULTICALL3_CODE: &str = include_str!("./evm-contracts/Multicall3.bin"); +const MULTICALL3_INPUT: &str = include_str!("./evm-contracts/Multicall3.data"); +#[test] +fn multicall3_test() -> anyhow::Result<()> { + let mut chain = MockChain::setup("..")?; + let from_addr = [1u8; 20]; + let from_id = chain.create_eoa_account(&from_addr, 10000000.into())?; + let _ = chain.deploy(from_id, &hex::decode(MULTICALL3_CODE)?, 1000000, 1, 0)?; + let contract_info = MockContractInfo::create(&from_addr, 0); + let contract_eth_addr = contract_info.eth_addr.try_into().unwrap(); + let contract_account_id = chain + .get_account_id_by_eth_address(&contract_eth_addr)? + .expect("contract account id"); + + let eth_addr = hex::encode(&contract_eth_addr); + const OLD_ADDR: &str = "ca11bde05977b3631167028862be2a173976ca11"; + let input = MULTICALL3_INPUT.trim_end_matches('\n'); + let input = input.replace(OLD_ADDR, ð_addr); + let input = hex::decode(input)?; + + chain.set_max_cycles(300_000_000); + // used_cycles: 276137907 + let result = chain.execute(from_id, contract_account_id, &input, 1000000000, 1, 0)?; + assert_eq!(result.exit_code, 0); + check_cycles("Multicall3", result.cycles.execution, 280_000_000); + Ok(()) +} From 10c244921ea5f77a7c01c3510f8e47f2ce268f62 Mon Sep 17 00:00:00 2001 From: magicalne Date: Mon, 24 Oct 2022 23:23:04 +0800 Subject: [PATCH 2/3] chore: update version and refs --- deps/godwoken-scripts | 2 +- polyjuice-tests/Cargo.lock | 24 ++++++++++++------------ polyjuice-tests/Cargo.toml | 16 ++++++++-------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/deps/godwoken-scripts b/deps/godwoken-scripts index 231c63de..d0dee8f8 160000 --- a/deps/godwoken-scripts +++ b/deps/godwoken-scripts @@ -1 +1 @@ -Subproject commit 231c63de31342408fccf83d848e6128e9eeb0f77 +Subproject commit d0dee8f819ed6b955aa842ea16d80d9dd8efcae7 diff --git a/polyjuice-tests/Cargo.lock b/polyjuice-tests/Cargo.lock index 915e80f6..bc1f4305 100644 --- a/polyjuice-tests/Cargo.lock +++ b/polyjuice-tests/Cargo.lock @@ -866,7 +866,7 @@ dependencies = [ [[package]] name = "gw-ckb-hardfork" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "arc-swap", "ckb-types", @@ -877,7 +877,7 @@ dependencies = [ [[package]] name = "gw-common" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "cfg-if 0.1.10", "gw-hash", @@ -890,7 +890,7 @@ dependencies = [ [[package]] name = "gw-config" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "ckb-fixed-hash", "gw-jsonrpc-types", @@ -901,7 +901,7 @@ dependencies = [ [[package]] name = "gw-db" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "ckb-rocksdb", "gw-config", @@ -915,7 +915,7 @@ dependencies = [ [[package]] name = "gw-generator" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "anyhow", "arc-swap", @@ -943,7 +943,7 @@ dependencies = [ [[package]] name = "gw-hash" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "blake2b-ref 0.3.1", ] @@ -951,7 +951,7 @@ dependencies = [ [[package]] name = "gw-jsonrpc-types" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "anyhow", "ckb-fixed-hash", @@ -965,7 +965,7 @@ dependencies = [ [[package]] name = "gw-rpc-client" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "anyhow", "arc-swap", @@ -998,7 +998,7 @@ dependencies = [ [[package]] name = "gw-store" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "anyhow", "arc-swap", @@ -1015,7 +1015,7 @@ dependencies = [ [[package]] name = "gw-traits" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "gw-common", "gw-db", @@ -1025,7 +1025,7 @@ dependencies = [ [[package]] name = "gw-types" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "cfg-if 0.1.10", "ckb-fixed-hash", @@ -1039,7 +1039,7 @@ dependencies = [ [[package]] name = "gw-utils" version = "1.7.0-rc1" -source = "git+https://github.com/magicalne/godwoken.git?branch=inc_ret_data#ee9381409ed06d976c88faef2ec313945bafcdc2" +source = "git+https://github.com/godwokenrises/godwoken.git?branch=develop#fa7516aec21faa12c3e42ca2f3cdda44b70419fd" dependencies = [ "anyhow", "ckb-crypto", diff --git a/polyjuice-tests/Cargo.toml b/polyjuice-tests/Cargo.toml index 1ba60a2c..059f8816 100644 --- a/polyjuice-tests/Cargo.toml +++ b/polyjuice-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polyjuice-tests" -version = "1.3.0" +version = "1.4.4" authors = ["Linfeng Qian "] edition = "2018" @@ -9,13 +9,13 @@ name = "lib" path = "src/lib.rs" [dependencies] -gw-types = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } -gw-common = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } -gw-db = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } -gw-store = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } -gw-config = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } -gw-traits = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } -gw-generator = { git = "https://github.com/magicalne/godwoken.git", branch = "inc_ret_data" } +gw-types = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } +gw-common = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } +gw-db = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } +gw-store = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } +gw-config = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } +gw-traits = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } +gw-generator = { git = "https://github.com/godwokenrises/godwoken.git", branch = "develop" } ckb-vm = { version = "=0.21.3", features = ["detect-asm"] } ckb-vm-definitions = "=0.21.3" From f7239e6c306310f45d860e34ec3c29b4f30a65ac Mon Sep 17 00:00:00 2001 From: magicalne Date: Mon, 24 Oct 2022 23:27:26 +0800 Subject: [PATCH 3/3] chore: bump version to 1.4.5 --- c/polyjuice_globals.h | 2 +- polyjuice-tests/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/c/polyjuice_globals.h b/c/polyjuice_globals.h index 0296808f..2de633a5 100644 --- a/c/polyjuice_globals.h +++ b/c/polyjuice_globals.h @@ -1,7 +1,7 @@ #ifndef POLYJUICE_GLOBALS_H #define POLYJUICE_GLOBALS_H -#define POLYJUICE_VERSION "v1.4.4" +#define POLYJUICE_VERSION "v1.4.5" #define ETH_ADDRESS_LEN 20 diff --git a/polyjuice-tests/Cargo.toml b/polyjuice-tests/Cargo.toml index 059f8816..304f822a 100644 --- a/polyjuice-tests/Cargo.toml +++ b/polyjuice-tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polyjuice-tests" -version = "1.4.4" +version = "1.4.5" authors = ["Linfeng Qian "] edition = "2018"