From 9b9628541e042480911f0f8062234d5b527cc842 Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Wed, 17 Jul 2024 10:53:53 +0100 Subject: [PATCH] fix: l1 NFT attributes --- .../corecontracts/test/core_accounts_test.go | 12 ++++---- packages/evm/evmtest/ERC20Example.bin | 2 +- packages/evm/evmtest/ISCTest.bin | 2 +- packages/evm/evmtest/SelfDestruct6780.bin | 2 +- .../evm/evmtest/wiki_how_tos/GetBalance.bin | 2 +- packages/isc/irc27nft.go | 4 +-- packages/isc/irc27nft_test.go | 28 ++++++++++++++++++- ...positNFTWithMinStorageDeposit-accounts.hex | 2 +- ...C20NativeTokensWithExternalFoundry-evm.hex | 2 +- ...s-max_supply_10,_mintTokens_5-accounts.hex | 2 +- .../testdbhash/TestGetEvents-blocklog.hex | 2 +- packages/testutil/testdbhash/TestInitLoad.hex | 2 +- ...mint_from_it_as_a_collection1-accounts.hex | 2 +- ...mint_from_it_as_a_collection2-accounts.hex | 2 +- .../testdbhash/TestSelfDestruct-evm.hex | 2 +- .../testdbhash/TestSendBaseTokens-evm.hex | 2 +- .../testdbhash/TestStorageContract-evm.hex | 2 +- .../TestUnprocessableWithPruning-blocklog.hex | 2 +- packages/vm/core/evm/evmtest/evm_test.go | 6 ++-- .../evm/iscmagic/ERC20BaseTokens.bin-runtime | 2 +- .../ERC20ExternalNativeTokens.bin-runtime | 2 +- .../iscmagic/ERC20NativeTokens.bin-runtime | 2 +- .../iscmagic/ERC721NFTCollection.bin-runtime | 2 +- .../core/evm/iscmagic/ERC721NFTs.bin-runtime | 2 +- packages/vm/core/evm/iscmagic/ISCSandbox.abi | 2 +- packages/vm/core/evm/iscmagic/ISCSandbox.sol | 7 +---- packages/vm/core/evm/iscmagic/ISCTypes.sol | 1 - packages/vm/core/evm/iscmagic/types.go | 2 -- packages/vm/core/evm/nfthack.go | 8 +++--- packages/vm/core/testcore/accounts_test.go | 4 +-- 30 files changed, 66 insertions(+), 48 deletions(-) diff --git a/contracts/wasm/corecontracts/test/core_accounts_test.go b/contracts/wasm/corecontracts/test/core_accounts_test.go index 93f017754f..4064c5b8e9 100644 --- a/contracts/wasm/corecontracts/test/core_accounts_test.go +++ b/contracts/wasm/corecontracts/test/core_accounts_test.go @@ -307,7 +307,7 @@ func TestAccountNFTAmountInCollection(t *testing.T) { "text/html", "https://my-awesome-nft-project.com", "a string that is longer than 32 bytes", - `[{"trait_type": "collection", "value": "super"}]`, + []interface{}{`{"trait_type": "collection", "value": "super"}`}, ) collection, collectionInfo, err := ctx.Chain.Env.MintNFTL1(collectionOwner, collectionOwnerAddr, collectionMetadata.Bytes()) @@ -318,13 +318,13 @@ func TestAccountNFTAmountInCollection(t *testing.T) { "application/json", "https://my-awesome-nft-project.com/1.json", "nft1", - `[{"trait_type": "Foo", "value": "Bar"}]`, + []interface{}{`{"trait_type": "Foo", "value": "Bar"}`}, ), isc.NewIRC27NFTMetadata( "application/json", "https://my-awesome-nft-project.com/2.json", "nft2", - `[{"trait_type": "Bar", "value": "Baz"}]`, + []interface{}{`{"trait_type": "Bar", "value": "Baz"}`}, ), } nftNum := len(nftMetadatas) @@ -380,7 +380,7 @@ func TestAccountNFTsInCollection(t *testing.T) { "text/html", "https://my-awesome-nft-project.com", "a string that is longer than 32 bytes", - `[{"trait_type": "collection", "value": "super"}]`, + []interface{}{`{"trait_type": "collection", "value": "super"}`}, ) collection, collectionInfo, err := ctx.Chain.Env.MintNFTL1(collectionOwner, collectionOwnerAddr, collectionMetadata.Bytes()) @@ -391,13 +391,13 @@ func TestAccountNFTsInCollection(t *testing.T) { "application/json", "https://my-awesome-nft-project.com/1.json", "nft1", - `[{"trait_type": "Foo", "value": "Bar"}]`, + []interface{}{`{"trait_type": "Foo", "value": "Bar"}`}, ), isc.NewIRC27NFTMetadata( "application/json", "https://my-awesome-nft-project.com/2.json", "nft2", - `[{"trait_type": "Bar", "value": "Baz"}]`, + []interface{}{`{"trait_type": "Bar", "value": "Baz"}`}, ), } nftNum := len(nftMetadatas) diff --git a/packages/evm/evmtest/ERC20Example.bin b/packages/evm/evmtest/ERC20Example.bin index 4fe29b4fe8..71dc5ad81c 100644 --- a/packages/evm/evmtest/ERC20Example.bin +++ b/packages/evm/evmtest/ERC20Example.bin @@ -1 +1 @@ -6080604052348015600e575f80fd5b50610ce18061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80634deefc5a1461004e578063afc1cf661461006a578063b231b87d14610086578063c066591e146100a2575b5f80fd5b61006860048036038101906100639190610498565b6100be565b005b610084600480360381019061007f9190610648565b61018a565b005b6100a0600480360381019061009b9190610498565b610229565b005b6100bc60048036038101906100b791906106e4565b6102c2565b005b6100c66103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166367d52f6d8261010a85610397565b6040518363ffffffff1660e01b8152600401610127929190610a92565b6020604051808303815f875af1158015610143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101679190610af9565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4f50c425f8054906101000a900463ffffffff168686866101d687610397565b6040518663ffffffff1660e01b81526004016101f6959493929190610b94565b5f604051808303815f87803b15801561020d575f80fd5b505af115801561021f573d5f803e3d5ffd5b5050505050505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc75f8054906101000a900463ffffffff168461027385610397565b6040518463ffffffff1660e01b815260040161029193929190610c09565b5f604051808303815f87803b1580156102a8575f80fd5b505af11580156102ba573d5f803e3d5ffd5b505050505050565b6102ca6103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634af8bc528787878561031188610397565b6040518663ffffffff1660e01b8152600401610331959493929190610c45565b6020604051808303815f875af115801561034d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103719190610af9565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b61039f6103ed565b6103a76103ed565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505080915050919050565b60405180606001604052805f81526020015f81526020015f81525090565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61043a81610428565b8114610444575f80fd5b50565b5f8135905061045581610431565b92915050565b5f67ffffffffffffffff82169050919050565b6104778161045b565b8114610481575f80fd5b50565b5f813590506104928161046e565b92915050565b5f80604083850312156104ae576104ad610420565b5b5f6104bb85828601610447565b92505060206104cc85828601610484565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610524826104de565b810181811067ffffffffffffffff82111715610543576105426104ee565b5b80604052505050565b5f610555610417565b9050610561828261051b565b919050565b5f67ffffffffffffffff8211156105805761057f6104ee565b5b610589826104de565b9050602081019050919050565b828183375f83830152505050565b5f6105b66105b184610566565b61054c565b9050828152602081018484840111156105d2576105d16104da565b5b6105dd848285610596565b509392505050565b5f82601f8301126105f9576105f86104d6565b5b81356106098482602086016105a4565b91505092915050565b5f60ff82169050919050565b61062781610612565b8114610631575f80fd5b50565b5f813590506106428161061e565b92915050565b5f805f80608085870312156106605761065f610420565b5b5f85013567ffffffffffffffff81111561067d5761067c610424565b5b610689878288016105e5565b945050602085013567ffffffffffffffff8111156106aa576106a9610424565b5b6106b6878288016105e5565b93505060406106c787828801610634565b92505060606106d887828801610484565b91505092959194509250565b5f805f805f60a086880312156106fd576106fc610420565b5b5f86013567ffffffffffffffff81111561071a57610719610424565b5b610726888289016105e5565b955050602086013567ffffffffffffffff81111561074757610746610424565b5b610753888289016105e5565b945050604061076488828901610634565b935050606061077588828901610447565b925050608061078688828901610484565b9150509295509295909350565b61079c81610428565b82525050565b606082015f8201516107b65f850182610793565b5060208201516107c96020850182610793565b5060408201516107dc6040850182610793565b50505050565b6107eb8161045b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61084c8261081a565b6108568185610824565b9350610866818560208601610834565b61086f816104de565b840191505092915050565b5f602083015f8301518482035f8601526108948282610842565b9150508091505092915050565b5f604083015f8301518482035f8601526108bb828261087a565b91505060208301516108d06020860182610793565b508091505092915050565b5f6108e683836108a1565b905092915050565b5f602082019050919050565b5f610904826107f1565b61090e81856107fb565b9350836020820285016109208561080b565b805f5b8581101561095b578484038952815161093c85826108db565b9450610947836108ee565b925060208a01995050600181019050610923565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6109a982610996565b9050919050565b6109b98161099f565b82525050565b5f6109ca83836109b0565b60208301905092915050565b5f602082019050919050565b5f6109ec8261096d565b6109f68185610977565b9350610a0183610987565b805f5b83811015610a31578151610a1888826109bf565b9750610a23836109d6565b925050600181019050610a04565b5085935050505092915050565b5f606083015f830151610a535f8601826107e2565b5060208301518482036020860152610a6b82826108fa565b91505060408301518482036040860152610a8582826109e2565b9150508091505092915050565b5f608082019050610aa55f8301856107a2565b8181036060830152610ab78184610a3e565b90509392505050565b5f63ffffffff82169050919050565b610ad881610ac0565b8114610ae2575f80fd5b50565b5f81519050610af381610acf565b92915050565b5f60208284031215610b0e57610b0d610420565b5b5f610b1b84828501610ae5565b91505092915050565b610b2d81610ac0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f610b5782610b33565b610b618185610b3d565b9350610b71818560208601610834565b610b7a816104de565b840191505092915050565b610b8e81610612565b82525050565b5f60a082019050610ba75f830188610b24565b8181036020830152610bb98187610b4d565b90508181036040830152610bcd8186610b4d565b9050610bdc6060830185610b85565b8181036080830152610bee8184610a3e565b90509695505050505050565b610c0381610428565b82525050565b5f606082019050610c1c5f830186610b24565b610c296020830185610bfa565b8181036040830152610c3b8184610a3e565b9050949350505050565b5f60e0820190508181035f830152610c5d8188610b4d565b90508181036020830152610c718187610b4d565b9050610c806040830186610b85565b610c8d60608301856107a2565b81810360c0830152610c9f8184610a3e565b9050969550505050505056fea264697066735822122087d500930528b4ca930a01970783d2eabf464e34badd7380c2a92ffcb5da7de064736f6c634300081a0033 \ No newline at end of file +6080604052348015600e575f80fd5b50610ce18061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80634deefc5a1461004e578063afc1cf661461006a578063b231b87d14610086578063c066591e146100a2575b5f80fd5b61006860048036038101906100639190610498565b6100be565b005b610084600480360381019061007f9190610648565b61018a565b005b6100a0600480360381019061009b9190610498565b610229565b005b6100bc60048036038101906100b791906106e4565b6102c2565b005b6100c66103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166367d52f6d8261010a85610397565b6040518363ffffffff1660e01b8152600401610127929190610a92565b6020604051808303815f875af1158015610143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101679190610af9565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4f50c425f8054906101000a900463ffffffff168686866101d687610397565b6040518663ffffffff1660e01b81526004016101f6959493929190610b94565b5f604051808303815f87803b15801561020d575f80fd5b505af115801561021f573d5f803e3d5ffd5b5050505050505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc75f8054906101000a900463ffffffff168461027385610397565b6040518463ffffffff1660e01b815260040161029193929190610c09565b5f604051808303815f87803b1580156102a8575f80fd5b505af11580156102ba573d5f803e3d5ffd5b505050505050565b6102ca6103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634af8bc528787878561031188610397565b6040518663ffffffff1660e01b8152600401610331959493929190610c45565b6020604051808303815f875af115801561034d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103719190610af9565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b61039f6103ed565b6103a76103ed565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505080915050919050565b60405180606001604052805f81526020015f81526020015f81525090565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61043a81610428565b8114610444575f80fd5b50565b5f8135905061045581610431565b92915050565b5f67ffffffffffffffff82169050919050565b6104778161045b565b8114610481575f80fd5b50565b5f813590506104928161046e565b92915050565b5f80604083850312156104ae576104ad610420565b5b5f6104bb85828601610447565b92505060206104cc85828601610484565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610524826104de565b810181811067ffffffffffffffff82111715610543576105426104ee565b5b80604052505050565b5f610555610417565b9050610561828261051b565b919050565b5f67ffffffffffffffff8211156105805761057f6104ee565b5b610589826104de565b9050602081019050919050565b828183375f83830152505050565b5f6105b66105b184610566565b61054c565b9050828152602081018484840111156105d2576105d16104da565b5b6105dd848285610596565b509392505050565b5f82601f8301126105f9576105f86104d6565b5b81356106098482602086016105a4565b91505092915050565b5f60ff82169050919050565b61062781610612565b8114610631575f80fd5b50565b5f813590506106428161061e565b92915050565b5f805f80608085870312156106605761065f610420565b5b5f85013567ffffffffffffffff81111561067d5761067c610424565b5b610689878288016105e5565b945050602085013567ffffffffffffffff8111156106aa576106a9610424565b5b6106b6878288016105e5565b93505060406106c787828801610634565b92505060606106d887828801610484565b91505092959194509250565b5f805f805f60a086880312156106fd576106fc610420565b5b5f86013567ffffffffffffffff81111561071a57610719610424565b5b610726888289016105e5565b955050602086013567ffffffffffffffff81111561074757610746610424565b5b610753888289016105e5565b945050604061076488828901610634565b935050606061077588828901610447565b925050608061078688828901610484565b9150509295509295909350565b61079c81610428565b82525050565b606082015f8201516107b65f850182610793565b5060208201516107c96020850182610793565b5060408201516107dc6040850182610793565b50505050565b6107eb8161045b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61084c8261081a565b6108568185610824565b9350610866818560208601610834565b61086f816104de565b840191505092915050565b5f602083015f8301518482035f8601526108948282610842565b9150508091505092915050565b5f604083015f8301518482035f8601526108bb828261087a565b91505060208301516108d06020860182610793565b508091505092915050565b5f6108e683836108a1565b905092915050565b5f602082019050919050565b5f610904826107f1565b61090e81856107fb565b9350836020820285016109208561080b565b805f5b8581101561095b578484038952815161093c85826108db565b9450610947836108ee565b925060208a01995050600181019050610923565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6109a982610996565b9050919050565b6109b98161099f565b82525050565b5f6109ca83836109b0565b60208301905092915050565b5f602082019050919050565b5f6109ec8261096d565b6109f68185610977565b9350610a0183610987565b805f5b83811015610a31578151610a1888826109bf565b9750610a23836109d6565b925050600181019050610a04565b5085935050505092915050565b5f606083015f830151610a535f8601826107e2565b5060208301518482036020860152610a6b82826108fa565b91505060408301518482036040860152610a8582826109e2565b9150508091505092915050565b5f608082019050610aa55f8301856107a2565b8181036060830152610ab78184610a3e565b90509392505050565b5f63ffffffff82169050919050565b610ad881610ac0565b8114610ae2575f80fd5b50565b5f81519050610af381610acf565b92915050565b5f60208284031215610b0e57610b0d610420565b5b5f610b1b84828501610ae5565b91505092915050565b610b2d81610ac0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f610b5782610b33565b610b618185610b3d565b9350610b71818560208601610834565b610b7a816104de565b840191505092915050565b610b8e81610612565b82525050565b5f60a082019050610ba75f830188610b24565b8181036020830152610bb98187610b4d565b90508181036040830152610bcd8186610b4d565b9050610bdc6060830185610b85565b8181036080830152610bee8184610a3e565b90509695505050505050565b610c0381610428565b82525050565b5f606082019050610c1c5f830186610b24565b610c296020830185610bfa565b8181036040830152610c3b8184610a3e565b9050949350505050565b5f60e0820190508181035f830152610c5d8188610b4d565b90508181036020830152610c718187610b4d565b9050610c806040830186610b85565b610c8d60608301856107a2565b81810360c0830152610c9f8184610a3e565b9050969550505050505056fea2646970667358221220fe0a0c0353c84c7ca7a1239e8c41186f9b5bf812bdd1483f44b15e6f4a5d4a2264736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/ISCTest.bin b/packages/evm/evmtest/ISCTest.bin index 6b01cd39a6..adf11f476f 100644 --- a/packages/evm/evmtest/ISCTest.bin +++ b/packages/evm/evmtest/ISCTest.bin @@ -1 +1 @@ -6080604052348015600e575f80fd5b506156618061001c5f395ff3fe60806040526004361061019a575f3560e01c8063904b8870116100eb578063bcfb195911610089578063d411defb11610063578063d411defb14610426578063dc91b3d01461043c578063e29a58a314610466578063e6c75c6b1461047c5761019a565b8063bcfb1959146103c0578063c36ba856146103e8578063c5e69945146103fe5761019a565b8063a4a05e21116100c5578063a4a05e2114610354578063b3ee69421461036a578063bb21d92114610380578063bcaeb8a8146103965761019a565b8063904b8870146102fa5780639e1a00aa14610310578063a038a3e61461032c5761019a565b806346d1167611610158578063564b81ef11610132578063564b81ef1461027657806357c8750e146102a0578063687cf0ea146102c85780636a68a760146102e45761019a565b806346d116761461023457806346fc4bb11461024a5780634e522e4b146102605761019a565b8062b79f021461019e57806301fc2576146101ba57806314f710fe146101d657806336c34640146101e05780633772d53f146101f657806339bfb2fa1461020c575b5f80fd5b6101b860048036038101906101b391906131a8565b6104a4565b005b6101d460048036038101906101cf9190613289565b61095d565b005b6101de610b9e565b005b3480156101eb575f80fd5b506101f4610fcd565b005b348015610201575f80fd5b5061020a61108e565b005b348015610217575f80fd5b50610232600480360381019061022d919061334f565b61114c565b005b34801561023f575f80fd5b506102486111f7565b005b348015610255575f80fd5b5061025e6112b8565b005b34801561026b575f80fd5b506102746112f6565b005b348015610281575f80fd5b5061028a61132d565b60405161029791906133c8565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190613759565b6113b4565b005b6102e260048036038101906102dd91906137cf565b611636565b005b3480156102ef575f80fd5b506102f8611af1565b005b348015610305575f80fd5b5061030e611b2c565b005b61032a60048036038101906103259190613854565b611bf5565b005b348015610337575f80fd5b50610352600480360381019061034d9190613930565b611c3d565b005b34801561035f575f80fd5b50610368611cb7565b005b348015610375575f80fd5b5061037e611f77565b005b34801561038b575f80fd5b50610394612218565b005b3480156103a1575f80fd5b506103aa612248565b6040516103b791906139d7565b60405180910390f35b3480156103cb575f80fd5b506103e660048036038101906103e191906139f7565b6124cd565b005b3480156103f3575f80fd5b506103fc6124e6565b005b348015610409575f80fd5b50610424600480360381019061041f9190613a22565b6126a3565b005b348015610431575f80fd5b5061043a6128d6565b005b348015610447575f80fd5b50610450612cb4565b60405161045d9190613a9d565b60405180910390f35b348015610471575f80fd5b5061047a612cba565b005b348015610487575f80fd5b506104a2600480360381019061049d9190613930565b612cf7565b005b6104ac612f3f565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f6104d883612d74565b90505f6040518060200160405280600367ffffffffffffffff81111561050157610500613084565b5b60405190808252806020026020018201604052801561053a57816020015b610527612f69565b81526020019060019003908161051f5790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f815181106105d5576105d4613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f015160018151811061064457610643613ab6565b5b60200260200101819052505f600167ffffffffffffffff81111561066b5761066a613084565b5b6040519080825280601f01601f19166020018201604052801561069d5781602001600182028036833780820191505090505b509050600160f81b815f815181106106b8576106b7613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060405180604001604052806040518060400160405280600181526020017f7700000000000000000000000000000000000000000000000000000000000000815250815260200182815250825f015160028151811061074757610746613ab6565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016107ce90613b3d565b602060405180830381865afa1580156107e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080d9190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161085890613bfa565b602060405180830381865afa158015610873573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190613b85565b86896040518563ffffffff1660e01b81526004016108b89493929190614001565b5f604051808303815f875af11580156108d3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108fb9190614278565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f8151811061093457610933613ab6565b5b60200260200101516020015160405161094d91906139d7565b60405180910390a1505050505050565b610965612f3f565b5f8267ffffffffffffffff1603610a0c5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a714b58d336040518263ffffffff1660e01b81526004016109c391906142df565b5f60405180830381865afa1580156109dd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a0591906145d3565b9050610a2c565b81815f019067ffffffffffffffff16908167ffffffffffffffff16815250505b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b8152600401610a7b92919061461a565b5f604051808303815f87803b158015610a92575f80fd5b505af1158015610aa4573d5f803e3d5ffd5b50505050610ab0612f3f565b6101f467ffffffffffffffff16825f015167ffffffffffffffff1611610ad4575f80fd5b6101f4825f0151610ae59190614675565b815f019067ffffffffffffffff16908167ffffffffffffffff1681525050610b0b612f83565b610b13612fd1565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538785600186866040518663ffffffff1660e01b8152600401610b699594939291906148ab565b5f604051808303815f87803b158015610b80575f80fd5b505af1158015610b92573d5f803e3d5ffd5b50505050505050505050565b610ba6612f3f565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c25573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610c4d919061496d565b90505f6040518060200160405280600267ffffffffffffffff811115610c7657610c75613084565b5b604051908082528060200260200182016040528015610caf57816020015b610c9c612f69565b815260200190600190039081610c945790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f81518110610d4a57610d49613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f0151600181518110610db957610db8613ab6565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610e4090613b3d565b602060405180830381865afa158015610e5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7f9190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610eca90613bfa565b602060405180830381865afa158015610ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f099190613b85565b85886040518563ffffffff1660e01b8152600401610f2a9493929190614001565b5f604051808303815f875af1158015610f45573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f6d9190614278565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f81518110610fa657610fa5613ab6565b5b602002602001015160200151604051610fbf91906139d7565b60405180910390a150505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca6528ce6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110529190614a09565b90507f41aec7e1afdd771a4a8d3d2f4195266991744d24445781617c2151aa73e30186816040516110839190614a77565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635404bbf76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111109190614ac1565b90507f2778726dc1b9d6d2ee2628a18174907da485ba8765490e157ddf1202528ed5bc816040516111419190614afb565b60405180910390a150565b611154612f3f565b81815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc78585846040518463ffffffff1660e01b81526004016111c493929190614b32565b5f604051808303815f87803b1580156111db575f80fd5b505af11580156111ed573d5f803e3d5ffd5b5050505050505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015611254573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061127c919061496d565b90507faded0c26c8cc65771b245ec36a4a290a35b0cd003545068bcef2dcac18b8815c816040516112ad9190614b95565b60405180910390a150565b602a6040517fa8b4db620000000000000000000000000000000000000000000000000000000081526004016112ed9190614bfa565b60405180910390fd5b7f5d1ca04f16bd7543edfc3334447b8976b0504f3a3e449dcd9992eb93781a80f360405161132390614c5d565b60405180910390a1565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561138b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113af9190614ca5565b905090565b5f6040518060200160405280600267ffffffffffffffff8111156113db576113da613084565b5b60405190808252806020026020018201604052801561141457816020015b611401612f69565b8152602001906001900390816113f95790505b50815250905060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001845f0151815250815f01515f8151811061147d5761147c613ab6565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161150390613b3d565b602060405180830381865afa15801561151e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115429190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161158d90614d1a565b602060405180830381865afa1580156115a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cc9190613b85565b84866040518563ffffffff1660e01b81526004016115ed9493929190614001565b5f604051808303815f875af1158015611608573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906116309190614278565b50505050565b61163e612f3f565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa1580156116bd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906116e5919061496d565b90505f6040518060200160405280600367ffffffffffffffff81111561170e5761170d613084565b5b60405190808252806020026020018201604052801561174757816020015b611734612f69565b81526020019060019003908161172c5790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f815181106117e2576117e1613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f015160018151811061185157611850613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f43000000000000000000000000000000000000000000000000000000000000008152508152602001856040516020016118b39190614d58565b604051602081830303815290604052815250815f01516002815181106118dc576118db613ab6565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161196390613b3d565b602060405180830381865afa15801561197e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a29190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016119ed90613bfa565b602060405180830381865afa158015611a08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a2c9190613b85565b85886040518563ffffffff1660e01b8152600401611a4d9493929190614001565b5f604051808303815f875af1158015611a68573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611a909190614278565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f81518110611ac957611ac8613ab6565b5b602002602001015160200151604051611ae291906139d7565b60405180910390a15050505050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390614c5d565b60405180910390fd5b5f604051611b3990612ff3565b604051809103905ff080158015611b52573d5f803e3d5ffd5b5090507f619e004505ac1d1c1c901fa7ad8f849ad75977fe395f6df05966aac8702a22a281604051611b8491906142df565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff1663bcfb1959336040518263ffffffff1660e01b8152600401611bc59190614d81565b5f604051808303815f87803b158015611bdc575f80fd5b505af1158015611bee573d5f803e3d5ffd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c38573d5f803e3d5ffd5b505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401611c8a9190614ddc565b5f604051808303815f87803b158015611ca1575f80fd5b505af1158015611cb3573d5f803e3d5ffd5b5f80fd5b5f6040518060200160405280600167ffffffffffffffff811115611cde57611cdd613084565b5b604051908082528060200260200182016040528015611d1757816020015b611d04612f69565b815260200190600190039081611cfc5790505b5081525090505f6040518060400160405280600881526020017f2a00000000000000000000000000000000000000000000000000000000000000815250905060405180604001604052806040518060400160405280600781526020017f636f756e74657200000000000000000000000000000000000000000000000000815250815260200182815250825f01515f81518110611db657611db5613ab6565b5b6020026020010181905250611dc9612f3f565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611e4490614e46565b602060405180830381865afa158015611e5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e839190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611ece90614eae565b602060405180830381865afa158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190613b85565b86856040518563ffffffff1660e01b8152600401611f2e9493929190614001565b5f604051808303815f875af1158015611f49573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611f719190614278565b50505050565b5f3060601b604051602001611f8c9190614f46565b60405160208183030381529060405290505f6040518060200160405280600167ffffffffffffffff811115611fc457611fc3613084565b5b604051908082528060200260200182016040528015611ffd57816020015b611fea612f69565b815260200190600190039081611fe25790505b50815250905060405180604001604052806040518060400160405280600181526020017f6300000000000000000000000000000000000000000000000000000000000000815250815260200183815250815f01515f8151811061206357612062613ab6565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016120e990614fc8565b602060405180830381865afa158015612104573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121289190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161217390615030565b602060405180830381865afa15801561218e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121b29190613b85565b846040518463ffffffff1660e01b81526004016121d19392919061504e565b5f60405180830381865afa1580156121eb573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906122139190614278565b505050565b7fb7575244c27f0af0a38da3d7e04920b4409766ef4699eea08f74dff24db98a1a60405160405180910390a15f80fd5b60605f60405180602001604052805f67ffffffffffffffff8111156122705761226f613084565b5b6040519080825280602002602001820160405280156122a957816020015b612296612f69565b81526020019060019003908161228e5790505b5081525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161232b90613b3d565b602060405180830381865afa158015612346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236a9190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016123b5906150d4565b602060405180830381865afa1580156123d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123f49190613b85565b856040518463ffffffff1660e01b81526004016124139392919061504e565b5f60405180830381865afa15801561242d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906124559190614278565b90505f5b815f0151518110156124c6575f825f0151828151811061247c5761247b613ab6565b5b60200260200101515f015151036124b957815f015181815181106124a3576124a2613ab6565b5b60200260200101516020015193505050506124ca565b8080600101915050612459565b5f80fd5b90565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b6124ee613000565b6124f6612f3f565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016125719061513c565b602060405180830381865afa15801561258c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b09190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016125fb906151a4565b602060405180830381865afa158015612616573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061263a9190613b85565b85856040518563ffffffff1660e01b815260040161265b9493929190614001565b5f604051808303815f875af1158015612676573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061269e9190614278565b505050565b6126ab612f3f565b81815f019067ffffffffffffffff16908167ffffffffffffffff1681525050600167ffffffffffffffff8111156126e5576126e4613084565b5b6040519080825280602002602001820160405280156127135781602001602082028036833780820191505090505b5081604001819052508281604001515f8151811061273457612733613ab6565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b815260040161278f92919061461a565b5f604051808303815f87803b1580156127a6575f80fd5b505af11580156127b8573d5f803e3d5ffd5b505050506127c4612f3f565b600167ffffffffffffffff8111156127df576127de613084565b5b60405190808252806020026020018201604052801561280d5781602001602082028036833780820191505090505b5081604001819052508381604001515f8151811061282e5761282d613ab6565b5b602002602001018181525050612842612f83565b61284a612fd1565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538885600186866040518663ffffffff1660e01b81526004016128a09594939291906148ab565b5f604051808303815f87803b1580156128b7575f80fd5b505af11580156128c9573d5f803e3d5ffd5b5050505050505050505050565b5f606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016129139061520c565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161299d9190615264565b5f604051808303815f865af19150503d805f81146129d6576040519150601f19603f3d011682016040523d82523d5f602084013e6129db565b606091505b50809250819350505081612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906152c4565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f564b81ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612adf9190615264565b5f60405180830381855afa9150503d805f8114612b17576040519150601f19603f3d011682016040523d82523d5f602084013e612b1c565b606091505b50809250819350505081612b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5c90615352565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16604051602401612b9f906153ba565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612c299190615264565b5f60405180830381855afa9150503d805f8114612c61576040519150601f19603f3d011682016040523d82523d5f602084013e612c66565b606091505b5080925081935050508115612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790615448565b60405180910390fd5b5050565b6101f481565b5b6127105a10612cf5577ff9c7a13c2c2ddb716633ae77fd03fb7d2e3bf5ab3a45ba50ec2d3decc9ee650c60405160405180910390a1612cbb565b565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401612d449190614ddc565b5f604051808303815f87803b158015612d5b575f80fd5b505af1158015612d6d573d5f803e3d5ffd5b5050505050565b612d7c613013565b6020825114612dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db7906154b0565b60405180910390fd5b612dc8613013565b602267ffffffffffffffff811115612de357612de2613084565b5b6040519080825280601f01601f191660200182016040528015612e155781602001600182028036833780820191505090505b50815f0181905250600160f81b815f01515f81518110612e3857612e37613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60f81b815f0151600181518110612e8157612e80613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015612f3557838181518110612ecd57612ecc613ab6565b5b602001015160f81c60f81b825f0151600283612ee991906154ce565b81518110612efa57612ef9613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050612eb1565b5080915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b604051806040016040528060608152602001606081525090565b6040518060a001604052805f63ffffffff1681526020015f63ffffffff168152602001612fae613000565b8152602001612fbb612f3f565b81526020015f67ffffffffffffffff1681525090565b60405180604001604052805f60070b8152602001612fed613026565b81525090565b61012a8061550283390190565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b60405180604001604052805f60070b8152602001613042613048565b81525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6130ba82613074565b810181811067ffffffffffffffff821117156130d9576130d8613084565b5b80604052505050565b5f6130eb61305b565b90506130f782826130b1565b919050565b5f67ffffffffffffffff82111561311657613115613084565b5b61311f82613074565b9050602081019050919050565b828183375f83830152505050565b5f61314c613147846130fc565b6130e2565b90508281526020810184848401111561316857613167613070565b5b61317384828561312c565b509392505050565b5f82601f83011261318f5761318e61306c565b5b813561319f84826020860161313a565b91505092915050565b5f602082840312156131bd576131bc613064565b5b5f82013567ffffffffffffffff8111156131da576131d9613068565b5b6131e68482850161317b565b91505092915050565b5f80fd5b5f80fd5b5f6020828403121561320c5761320b6131ef565b5b61321660206130e2565b90505f82013567ffffffffffffffff811115613235576132346131f3565b5b6132418482850161317b565b5f8301525092915050565b5f67ffffffffffffffff82169050919050565b6132688161324c565b8114613272575f80fd5b50565b5f813590506132838161325f565b92915050565b5f806040838503121561329f5761329e613064565b5b5f83013567ffffffffffffffff8111156132bc576132bb613068565b5b6132c8858286016131f7565b92505060206132d985828601613275565b9150509250929050565b5f63ffffffff82169050919050565b6132fb816132e3565b8114613305575f80fd5b50565b5f81359050613316816132f2565b92915050565b5f819050919050565b61332e8161331c565b8114613338575f80fd5b50565b5f8135905061334981613325565b92915050565b5f805f6060848603121561336657613365613064565b5b5f61337386828701613308565b93505060206133848682870161333b565b925050604061339586828701613275565b9150509250925092565b5f819050919050565b5f6133b28261339f565b9050919050565b6133c2816133a8565b82525050565b5f6020820190506133db5f8301846133b9565b92915050565b5f602082840312156133f6576133f56131ef565b5b61340060206130e2565b90505f82013567ffffffffffffffff81111561341f5761341e6131f3565b5b61342b8482850161317b565b5f8301525092915050565b5f67ffffffffffffffff8211156134505761344f613084565b5b602082029050602081019050919050565b5f80fd5b5f6020828403121561347a576134796131ef565b5b61348460206130e2565b90505f82013567ffffffffffffffff8111156134a3576134a26131f3565b5b6134af8482850161317b565b5f8301525092915050565b5f604082840312156134cf576134ce6131ef565b5b6134d960406130e2565b90505f82013567ffffffffffffffff8111156134f8576134f76131f3565b5b61350484828501613465565b5f8301525060206135178482850161333b565b60208301525092915050565b5f61353561353084613436565b6130e2565b9050808382526020820190506020840283018581111561355857613557613461565b5b835b8181101561359f57803567ffffffffffffffff81111561357d5761357c61306c565b5b80860161358a89826134ba565b8552602085019450505060208101905061355a565b5050509392505050565b5f82601f8301126135bd576135bc61306c565b5b81356135cd848260208601613523565b91505092915050565b5f67ffffffffffffffff8211156135f0576135ef613084565b5b602082029050602081019050919050565b61360a8161339f565b8114613614575f80fd5b50565b5f8135905061362581613601565b92915050565b5f61363d613638846135d6565b6130e2565b905080838252602082019050602084028301858111156136605761365f613461565b5b835b8181101561368957806136758882613617565b845260208401935050602081019050613662565b5050509392505050565b5f82601f8301126136a7576136a661306c565b5b81356136b784826020860161362b565b91505092915050565b5f606082840312156136d5576136d46131ef565b5b6136df60606130e2565b90505f6136ee84828501613275565b5f83015250602082013567ffffffffffffffff811115613711576137106131f3565b5b61371d848285016135a9565b602083015250604082013567ffffffffffffffff811115613741576137406131f3565b5b61374d84828501613693565b60408301525092915050565b5f806040838503121561376f5761376e613064565b5b5f83013567ffffffffffffffff81111561378c5761378b613068565b5b613798858286016133e1565b925050602083013567ffffffffffffffff8111156137b9576137b8613068565b5b6137c5858286016136c0565b9150509250929050565b5f602082840312156137e4576137e3613064565b5b5f6137f184828501613617565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613823826137fa565b9050919050565b61383381613819565b811461383d575f80fd5b50565b5f8135905061384e8161382a565b92915050565b5f806040838503121561386a57613869613064565b5b5f61387785828601613840565b92505060206138888582860161333b565b9150509250929050565b5f67ffffffffffffffff8211156138ac576138ab613084565b5b6138b582613074565b9050602081019050919050565b5f6138d46138cf84613892565b6130e2565b9050828152602081018484840111156138f0576138ef613070565b5b6138fb84828561312c565b509392505050565b5f82601f8301126139175761391661306c565b5b81356139278482602086016138c2565b91505092915050565b5f6020828403121561394557613944613064565b5b5f82013567ffffffffffffffff81111561396257613961613068565b5b61396e84828501613903565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6139a982613977565b6139b38185613981565b93506139c3818560208601613991565b6139cc81613074565b840191505092915050565b5f6020820190508181035f8301526139ef818461399f565b905092915050565b5f60208284031215613a0c57613a0b613064565b5b5f613a1984828501613840565b91505092915050565b5f805f60608486031215613a3957613a38613064565b5b5f84013567ffffffffffffffff811115613a5657613a55613068565b5b613a62868287016131f7565b9350506020613a7386828701613617565b9250506040613a8486828701613275565b9150509250925092565b613a978161324c565b82525050565b5f602082019050613ab05f830184613a8e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f6163636f756e74730000000000000000000000000000000000000000000000005f82015250565b5f613b27600883613ae3565b9150613b3282613af3565b602082019050919050565b5f6020820190508181035f830152613b5481613b1b565b9050919050565b613b64816132e3565b8114613b6e575f80fd5b50565b5f81519050613b7f81613b5b565b92915050565b5f60208284031215613b9a57613b99613064565b5b5f613ba784828501613b71565b91505092915050565b7f6d696e744e4654000000000000000000000000000000000000000000000000005f82015250565b5f613be4600783613ae3565b9150613bef82613bb0565b602082019050919050565b5f6020820190508181035f830152613c1181613bd8565b9050919050565b5f819050919050565b5f613c3b613c36613c31846132e3565b613c18565b6132e3565b9050919050565b613c4b81613c21565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f613c9482613977565b613c9e8185613c7a565b9350613cae818560208601613991565b613cb781613074565b840191505092915050565b5f604083015f8301518482035f860152613cdc8282613c8a565b91505060208301518482036020860152613cf68282613c8a565b9150508091505092915050565b5f613d0e8383613cc2565b905092915050565b5f602082019050919050565b5f613d2c82613c51565b613d368185613c5b565b935083602082028501613d4885613c6b565b805f5b85811015613d835784840389528151613d648582613d03565b9450613d6f83613d16565b925060208a01995050600181019050613d4b565b50829750879550505050505092915050565b5f602083015f8301518482035f860152613daf8282613d22565b9150508091505092915050565b613dc58161324c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f860152613e0e8282613c8a565b9150508091505092915050565b613e248161331c565b82525050565b5f604083015f8301518482035f860152613e448282613df4565b9150506020830151613e596020860182613e1b565b508091505092915050565b5f613e6f8383613e2a565b905092915050565b5f602082019050919050565b5f613e8d82613dcb565b613e978185613dd5565b935083602082028501613ea985613de5565b805f5b85811015613ee45784840389528151613ec58582613e64565b9450613ed083613e77565b925060208a01995050600181019050613eac565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f28816133a8565b82525050565b5f613f398383613f1f565b60208301905092915050565b5f602082019050919050565b5f613f5b82613ef6565b613f658185613f00565b9350613f7083613f10565b805f5b83811015613fa0578151613f878882613f2e565b9750613f9283613f45565b925050600181019050613f73565b5085935050505092915050565b5f606083015f830151613fc25f860182613dbc565b5060208301518482036020860152613fda8282613e83565b91505060408301518482036040860152613ff48282613f51565b9150508091505092915050565b5f6080820190506140145f830187613c42565b6140216020830186613c42565b81810360408301526140338185613d95565b905081810360608301526140478184613fad565b905095945050505050565b5f67ffffffffffffffff82111561406c5761406b613084565b5b602082029050602081019050919050565b5f61408f61408a846130fc565b6130e2565b9050828152602081018484840111156140ab576140aa613070565b5b6140b6848285613991565b509392505050565b5f82601f8301126140d2576140d161306c565b5b81516140e284826020860161407d565b91505092915050565b5f60408284031215614100576140ff6131ef565b5b61410a60406130e2565b90505f82015167ffffffffffffffff811115614129576141286131f3565b5b614135848285016140be565b5f83015250602082015167ffffffffffffffff811115614158576141576131f3565b5b614164848285016140be565b60208301525092915050565b5f61418261417d84614052565b6130e2565b905080838252602082019050602084028301858111156141a5576141a4613461565b5b835b818110156141ec57805167ffffffffffffffff8111156141ca576141c961306c565b5b8086016141d789826140eb565b855260208501945050506020810190506141a7565b5050509392505050565b5f82601f83011261420a5761420961306c565b5b815161421a848260208601614170565b91505092915050565b5f60208284031215614238576142376131ef565b5b61424260206130e2565b90505f82015167ffffffffffffffff811115614261576142606131f3565b5b61426d848285016141f6565b5f8301525092915050565b5f6020828403121561428d5761428c613064565b5b5f82015167ffffffffffffffff8111156142aa576142a9613068565b5b6142b684828501614223565b91505092915050565b5f6142c9826137fa565b9050919050565b6142d9816142bf565b82525050565b5f6020820190506142f25f8301846142d0565b92915050565b5f815190506143068161325f565b92915050565b5f60208284031215614321576143206131ef565b5b61432b60206130e2565b90505f82015167ffffffffffffffff81111561434a576143496131f3565b5b614356848285016140be565b5f8301525092915050565b5f8151905061436f81613325565b92915050565b5f6040828403121561438a576143896131ef565b5b61439460406130e2565b90505f82015167ffffffffffffffff8111156143b3576143b26131f3565b5b6143bf8482850161430c565b5f8301525060206143d284828501614361565b60208301525092915050565b5f6143f06143eb84613436565b6130e2565b9050808382526020820190506020840283018581111561441357614412613461565b5b835b8181101561445a57805167ffffffffffffffff8111156144385761443761306c565b5b8086016144458982614375565b85526020850194505050602081019050614415565b5050509392505050565b5f82601f8301126144785761447761306c565b5b81516144888482602086016143de565b91505092915050565b5f8151905061449f81613601565b92915050565b5f6144b76144b2846135d6565b6130e2565b905080838252602082019050602084028301858111156144da576144d9613461565b5b835b8181101561450357806144ef8882614491565b8452602084019350506020810190506144dc565b5050509392505050565b5f82601f8301126145215761452061306c565b5b81516145318482602086016144a5565b91505092915050565b5f6060828403121561454f5761454e6131ef565b5b61455960606130e2565b90505f614568848285016142f8565b5f83015250602082015167ffffffffffffffff81111561458b5761458a6131f3565b5b61459784828501614464565b602083015250604082015167ffffffffffffffff8111156145bb576145ba6131f3565b5b6145c78482850161450d565b60408301525092915050565b5f602082840312156145e8576145e7613064565b5b5f82015167ffffffffffffffff81111561460557614604613068565b5b6146118482850161453a565b91505092915050565b5f60408201905061462d5f8301856142d0565b818103602083015261463f8184613fad565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61467f8261324c565b915061468a8361324c565b9250828203905067ffffffffffffffff8111156146aa576146a9614648565b5b92915050565b5f602083015f8301518482035f8601526146ca8282613c8a565b9150508091505092915050565b5f8115159050919050565b6146eb816146d7565b82525050565b6146fa81613c21565b82525050565b5f602083015f8301518482035f86015261471a8282613d22565b9150508091505092915050565b5f606083015f83015161473c5f860182613dbc565b50602083015184820360208601526147548282613e83565b9150506040830151848203604086015261476e8282613f51565b9150508091505092915050565b5f60a083015f8301516147905f8601826146f1565b5060208301516147a360208601826146f1565b50604083015184820360408601526147bb8282614700565b915050606083015184820360608601526147d58282614727565b91505060808301516147ea6080860182613dbc565b508091505092915050565b5f8160070b9050919050565b61480a816147f5565b82525050565b5f602083015f8301518482035f86015261482a8282613c8a565b9150508091505092915050565b5f604083015f83015161484c5f860182614801565b50602083015184820360208601526148648282614810565b9150508091505092915050565b5f604083015f8301516148865f860182614801565b506020830151848203602086015261489e8282614837565b9150508091505092915050565b5f60a0820190508181035f8301526148c381886146b0565b905081810360208301526148d78187613fad565b90506148e660408301866146e2565b81810360608301526148f8818561477b565b9050818103608083015261490c8184614871565b90509695505050505050565b5f6020828403121561492d5761492c6131ef565b5b61493760206130e2565b90505f82015167ffffffffffffffff811115614956576149556131f3565b5b614962848285016140be565b5f8301525092915050565b5f6020828403121561498257614981613064565b5b5f82015167ffffffffffffffff81111561499f5761499e613068565b5b6149ab84828501614918565b91505092915050565b5f602082840312156149c9576149c86131ef565b5b6149d360206130e2565b90505f82015167ffffffffffffffff8111156149f2576149f16131f3565b5b6149fe848285016140be565b5f8301525092915050565b5f60208284031215614a1e57614a1d613064565b5b5f82015167ffffffffffffffff811115614a3b57614a3a613068565b5b614a47848285016149b4565b91505092915050565b5f602083015f8301518482035f860152614a6a8282613c8a565b9150508091505092915050565b5f6020820190508181035f830152614a8f8184614a50565b905092915050565b614aa08161339f565b8114614aaa575f80fd5b50565b5f81519050614abb81614a97565b92915050565b5f60208284031215614ad657614ad5613064565b5b5f614ae384828501614aad565b91505092915050565b614af58161339f565b82525050565b5f602082019050614b0e5f830184614aec565b92915050565b614b1d816132e3565b82525050565b614b2c8161331c565b82525050565b5f606082019050614b455f830186614b14565b614b526020830185614b23565b8181036040830152614b648184613fad565b9050949350505050565b5f602083015f8301518482035f860152614b888282613c8a565b9150508091505092915050565b5f6020820190508181035f830152614bad8184614b6e565b905092915050565b5f819050919050565b5f60ff82169050919050565b5f614be4614bdf614bda84614bb5565b613c18565b614bbe565b9050919050565b614bf481614bca565b82525050565b5f602082019050614c0d5f830184614beb565b92915050565b7f666f6f62617200000000000000000000000000000000000000000000000000005f82015250565b5f614c47600683613ae3565b9150614c5282614c13565b602082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b614c848161339f565b8114614c8e575f80fd5b50565b5f81519050614c9f81614c7b565b92915050565b5f60208284031215614cba57614cb9613064565b5b5f614cc784828501614c91565b91505092915050565b7f7472616e73666572416c6c6f77616e6365546f000000000000000000000000005f82015250565b5f614d04601383613ae3565b9150614d0f82614cd0565b602082019050919050565b5f6020820190508181035f830152614d3181614cf8565b9050919050565b5f819050919050565b614d52614d4d826133a8565b614d38565b82525050565b5f614d638284614d41565b60208201915081905092915050565b614d7b81613819565b82525050565b5f602082019050614d945f830184614d72565b92915050565b5f81519050919050565b5f614dae82614d9a565b614db88185613ae3565b9350614dc8818560208601613991565b614dd181613074565b840191505092915050565b5f6020820190508181035f830152614df48184614da4565b905092915050565b7f696e63636f756e746572000000000000000000000000000000000000000000005f82015250565b5f614e30600a83613ae3565b9150614e3b82614dfc565b602082019050919050565b5f6020820190508181035f830152614e5d81614e24565b9050919050565b7f696e63436f756e746572000000000000000000000000000000000000000000005f82015250565b5f614e98600a83613ae3565b9150614ea382614e64565b602082019050919050565b5f6020820190508181035f830152614ec581614e8c565b9050919050565b6b010000000000000000000000815250565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f819050919050565b614f23614f1e82614ede565b614f09565b82525050565b7604000000b3ee6942000000000000000000000000000000815250565b5f614f5082614ecc565b601582019150614f608284614f12565b601482019150614f6f82614f29565b60118201915081905092915050565b7f65766d00000000000000000000000000000000000000000000000000000000005f82015250565b5f614fb2600383613ae3565b9150614fbd82614f7e565b602082019050919050565b5f6020820190508181035f830152614fdf81614fa6565b9050919050565b7f63616c6c436f6e747261637400000000000000000000000000000000000000005f82015250565b5f61501a600c83613ae3565b915061502582614fe6565b602082019050919050565b5f6020820190508181035f8301526150478161500e565b9050919050565b5f6060820190506150615f830186613c42565b61506e6020830185613c42565b81810360408301526150808184613d95565b9050949350505050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f6150be600783613ae3565b91506150c98261508a565b602082019050919050565b5f6020820190508181035f8301526150eb816150b2565b9050919050565b7f676f7665726e616e6365000000000000000000000000000000000000000000005f82015250565b5f615126600a83613ae3565b9150615131826150f2565b602082019050919050565b5f6020820190508181035f8301526151538161511a565b9050919050565b7f636c61696d436861696e4f776e657273686970000000000000000000000000005f82015250565b5f61518e601383613ae3565b91506151998261515a565b602082019050919050565b5f6020820190508181035f8301526151bb81615182565b9050919050565b7f6e6f6e2d737461746963000000000000000000000000000000000000000000005f82015250565b5f6151f6600a83613ae3565b9150615201826151c2565b602082019050919050565b5f6020820190508181035f830152615223816151ea565b9050919050565b5f81905092915050565b5f61523e82613977565b615248818561522a565b9350615258818560208601613991565b80840191505092915050565b5f61526f8284615234565b915081905092915050565b7f63616c6c2073686f756c642073756363656564000000000000000000000000005f82015250565b5f6152ae601383613ae3565b91506152b98261527a565b602082019050919050565b5f6020820190508181035f8301526152db816152a2565b9050919050565b7f73746174696363616c6c20746f20766965772073686f756c64207375636365655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61533c602183613ae3565b9150615347826152e2565b604082019050919050565b5f6020820190508181035f83015261536981615330565b9050919050565b7f73746174696300000000000000000000000000000000000000000000000000005f82015250565b5f6153a4600683613ae3565b91506153af82615370565b602082019050919050565b5f6020820190508181035f8301526153d181615398565b9050919050565b7f73746174696363616c6c20746f206e6f6e2d766965772073686f756c642066615f8201527f696c000000000000000000000000000000000000000000000000000000000000602082015250565b5f615432602283613ae3565b915061543d826153d8565b604082019050919050565b5f6020820190508181035f83015261545f81615426565b9050919050565b7f6261642061646472657373206c656e67746800000000000000000000000000005f82015250565b5f61549a601283613ae3565b91506154a582615466565b602082019050919050565b5f6020820190508181035f8301526154c78161548e565b9050919050565b5f6154d88261331c565b91506154e38361331c565b92508282019050808211156154fb576154fa614648565b5b9291505056fe6080604052348015600e575f80fd5b5061010e8061001c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063bcfb195914602a575b5f80fd5b60406004803603810190603c919060b2565b6042565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f608682605f565b9050919050565b609481607e565b8114609d575f80fd5b50565b5f8135905060ac81608d565b92915050565b5f6020828403121560c45760c3605b565b5b5f60cf8482850160a0565b9150509291505056fea2646970667358221220c545e030768d61daa0411c6fc386c0dafc130882b06268fed99feec06c2aa12064736f6c634300081a0033a2646970667358221220ba35ccf0ddc5251accfa222da6fb163e0e80df410f44e9cda0767f9ea70382f464736f6c634300081a0033 \ No newline at end of file +6080604052348015600e575f80fd5b506156618061001c5f395ff3fe60806040526004361061019a575f3560e01c8063904b8870116100eb578063bcfb195911610089578063d411defb11610063578063d411defb14610426578063dc91b3d01461043c578063e29a58a314610466578063e6c75c6b1461047c5761019a565b8063bcfb1959146103c0578063c36ba856146103e8578063c5e69945146103fe5761019a565b8063a4a05e21116100c5578063a4a05e2114610354578063b3ee69421461036a578063bb21d92114610380578063bcaeb8a8146103965761019a565b8063904b8870146102fa5780639e1a00aa14610310578063a038a3e61461032c5761019a565b806346d1167611610158578063564b81ef11610132578063564b81ef1461027657806357c8750e146102a0578063687cf0ea146102c85780636a68a760146102e45761019a565b806346d116761461023457806346fc4bb11461024a5780634e522e4b146102605761019a565b8062b79f021461019e57806301fc2576146101ba57806314f710fe146101d657806336c34640146101e05780633772d53f146101f657806339bfb2fa1461020c575b5f80fd5b6101b860048036038101906101b391906131a8565b6104a4565b005b6101d460048036038101906101cf9190613289565b61095d565b005b6101de610b9e565b005b3480156101eb575f80fd5b506101f4610fcd565b005b348015610201575f80fd5b5061020a61108e565b005b348015610217575f80fd5b50610232600480360381019061022d919061334f565b61114c565b005b34801561023f575f80fd5b506102486111f7565b005b348015610255575f80fd5b5061025e6112b8565b005b34801561026b575f80fd5b506102746112f6565b005b348015610281575f80fd5b5061028a61132d565b60405161029791906133c8565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190613759565b6113b4565b005b6102e260048036038101906102dd91906137cf565b611636565b005b3480156102ef575f80fd5b506102f8611af1565b005b348015610305575f80fd5b5061030e611b2c565b005b61032a60048036038101906103259190613854565b611bf5565b005b348015610337575f80fd5b50610352600480360381019061034d9190613930565b611c3d565b005b34801561035f575f80fd5b50610368611cb7565b005b348015610375575f80fd5b5061037e611f77565b005b34801561038b575f80fd5b50610394612218565b005b3480156103a1575f80fd5b506103aa612248565b6040516103b791906139d7565b60405180910390f35b3480156103cb575f80fd5b506103e660048036038101906103e191906139f7565b6124cd565b005b3480156103f3575f80fd5b506103fc6124e6565b005b348015610409575f80fd5b50610424600480360381019061041f9190613a22565b6126a3565b005b348015610431575f80fd5b5061043a6128d6565b005b348015610447575f80fd5b50610450612cb4565b60405161045d9190613a9d565b60405180910390f35b348015610471575f80fd5b5061047a612cba565b005b348015610487575f80fd5b506104a2600480360381019061049d9190613930565b612cf7565b005b6104ac612f3f565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f6104d883612d74565b90505f6040518060200160405280600367ffffffffffffffff81111561050157610500613084565b5b60405190808252806020026020018201604052801561053a57816020015b610527612f69565b81526020019060019003908161051f5790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f815181106105d5576105d4613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f015160018151811061064457610643613ab6565b5b60200260200101819052505f600167ffffffffffffffff81111561066b5761066a613084565b5b6040519080825280601f01601f19166020018201604052801561069d5781602001600182028036833780820191505090505b509050600160f81b815f815181106106b8576106b7613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060405180604001604052806040518060400160405280600181526020017f7700000000000000000000000000000000000000000000000000000000000000815250815260200182815250825f015160028151811061074757610746613ab6565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016107ce90613b3d565b602060405180830381865afa1580156107e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080d9190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161085890613bfa565b602060405180830381865afa158015610873573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108979190613b85565b86896040518563ffffffff1660e01b81526004016108b89493929190614001565b5f604051808303815f875af11580156108d3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108fb9190614278565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f8151811061093457610933613ab6565b5b60200260200101516020015160405161094d91906139d7565b60405180910390a1505050505050565b610965612f3f565b5f8267ffffffffffffffff1603610a0c5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a714b58d336040518263ffffffff1660e01b81526004016109c391906142df565b5f60405180830381865afa1580156109dd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a0591906145d3565b9050610a2c565b81815f019067ffffffffffffffff16908167ffffffffffffffff16815250505b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b8152600401610a7b92919061461a565b5f604051808303815f87803b158015610a92575f80fd5b505af1158015610aa4573d5f803e3d5ffd5b50505050610ab0612f3f565b6101f467ffffffffffffffff16825f015167ffffffffffffffff1611610ad4575f80fd5b6101f4825f0151610ae59190614675565b815f019067ffffffffffffffff16908167ffffffffffffffff1681525050610b0b612f83565b610b13612fd1565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538785600186866040518663ffffffff1660e01b8152600401610b699594939291906148ab565b5f604051808303815f87803b158015610b80575f80fd5b505af1158015610b92573d5f803e3d5ffd5b50505050505050505050565b610ba6612f3f565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c25573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610c4d919061496d565b90505f6040518060200160405280600267ffffffffffffffff811115610c7657610c75613084565b5b604051908082528060200260200182016040528015610caf57816020015b610c9c612f69565b815260200190600190039081610c945790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f81518110610d4a57610d49613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f0151600181518110610db957610db8613ab6565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610e4090613b3d565b602060405180830381865afa158015610e5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7f9190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610eca90613bfa565b602060405180830381865afa158015610ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f099190613b85565b85886040518563ffffffff1660e01b8152600401610f2a9493929190614001565b5f604051808303815f875af1158015610f45573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f6d9190614278565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f81518110610fa657610fa5613ab6565b5b602002602001015160200151604051610fbf91906139d7565b60405180910390a150505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca6528ce6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561102a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110529190614a09565b90507f41aec7e1afdd771a4a8d3d2f4195266991744d24445781617c2151aa73e30186816040516110839190614a77565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635404bbf76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111109190614ac1565b90507f2778726dc1b9d6d2ee2628a18174907da485ba8765490e157ddf1202528ed5bc816040516111419190614afb565b60405180910390a150565b611154612f3f565b81815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc78585846040518463ffffffff1660e01b81526004016111c493929190614b32565b5f604051808303815f87803b1580156111db575f80fd5b505af11580156111ed573d5f803e3d5ffd5b5050505050505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015611254573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061127c919061496d565b90507faded0c26c8cc65771b245ec36a4a290a35b0cd003545068bcef2dcac18b8815c816040516112ad9190614b95565b60405180910390a150565b602a6040517fa8b4db620000000000000000000000000000000000000000000000000000000081526004016112ed9190614bfa565b60405180910390fd5b7f5d1ca04f16bd7543edfc3334447b8976b0504f3a3e449dcd9992eb93781a80f360405161132390614c5d565b60405180910390a1565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561138b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113af9190614ca5565b905090565b5f6040518060200160405280600267ffffffffffffffff8111156113db576113da613084565b5b60405190808252806020026020018201604052801561141457816020015b611401612f69565b8152602001906001900390816113f95790505b50815250905060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001845f0151815250815f01515f8151811061147d5761147c613ab6565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161150390613b3d565b602060405180830381865afa15801561151e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115429190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161158d90614d1a565b602060405180830381865afa1580156115a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cc9190613b85565b84866040518563ffffffff1660e01b81526004016115ed9493929190614001565b5f604051808303815f875af1158015611608573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906116309190614278565b50505050565b61163e612f3f565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa1580156116bd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906116e5919061496d565b90505f6040518060200160405280600367ffffffffffffffff81111561170e5761170d613084565b5b60405190808252806020026020018201604052801561174757816020015b611734612f69565b81526020019060019003908161172c5790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f815181106117e2576117e1613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f015160018151811061185157611850613ab6565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f43000000000000000000000000000000000000000000000000000000000000008152508152602001856040516020016118b39190614d58565b604051602081830303815290604052815250815f01516002815181106118dc576118db613ab6565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161196390613b3d565b602060405180830381865afa15801561197e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a29190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016119ed90613bfa565b602060405180830381865afa158015611a08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a2c9190613b85565b85886040518563ffffffff1660e01b8152600401611a4d9493929190614001565b5f604051808303815f875af1158015611a68573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611a909190614278565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f81518110611ac957611ac8613ab6565b5b602002602001015160200151604051611ae291906139d7565b60405180910390a15050505050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390614c5d565b60405180910390fd5b5f604051611b3990612ff3565b604051809103905ff080158015611b52573d5f803e3d5ffd5b5090507f619e004505ac1d1c1c901fa7ad8f849ad75977fe395f6df05966aac8702a22a281604051611b8491906142df565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff1663bcfb1959336040518263ffffffff1660e01b8152600401611bc59190614d81565b5f604051808303815f87803b158015611bdc575f80fd5b505af1158015611bee573d5f803e3d5ffd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c38573d5f803e3d5ffd5b505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401611c8a9190614ddc565b5f604051808303815f87803b158015611ca1575f80fd5b505af1158015611cb3573d5f803e3d5ffd5b5f80fd5b5f6040518060200160405280600167ffffffffffffffff811115611cde57611cdd613084565b5b604051908082528060200260200182016040528015611d1757816020015b611d04612f69565b815260200190600190039081611cfc5790505b5081525090505f6040518060400160405280600881526020017f2a00000000000000000000000000000000000000000000000000000000000000815250905060405180604001604052806040518060400160405280600781526020017f636f756e74657200000000000000000000000000000000000000000000000000815250815260200182815250825f01515f81518110611db657611db5613ab6565b5b6020026020010181905250611dc9612f3f565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611e4490614e46565b602060405180830381865afa158015611e5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e839190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611ece90614eae565b602060405180830381865afa158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190613b85565b86856040518563ffffffff1660e01b8152600401611f2e9493929190614001565b5f604051808303815f875af1158015611f49573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611f719190614278565b50505050565b5f3060601b604051602001611f8c9190614f46565b60405160208183030381529060405290505f6040518060200160405280600167ffffffffffffffff811115611fc457611fc3613084565b5b604051908082528060200260200182016040528015611ffd57816020015b611fea612f69565b815260200190600190039081611fe25790505b50815250905060405180604001604052806040518060400160405280600181526020017f6300000000000000000000000000000000000000000000000000000000000000815250815260200183815250815f01515f8151811061206357612062613ab6565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016120e990614fc8565b602060405180830381865afa158015612104573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121289190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161217390615030565b602060405180830381865afa15801561218e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121b29190613b85565b846040518463ffffffff1660e01b81526004016121d19392919061504e565b5f60405180830381865afa1580156121eb573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906122139190614278565b505050565b7fb7575244c27f0af0a38da3d7e04920b4409766ef4699eea08f74dff24db98a1a60405160405180910390a15f80fd5b60605f60405180602001604052805f67ffffffffffffffff8111156122705761226f613084565b5b6040519080825280602002602001820160405280156122a957816020015b612296612f69565b81526020019060019003908161228e5790505b5081525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161232b90613b3d565b602060405180830381865afa158015612346573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236a9190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016123b5906150d4565b602060405180830381865afa1580156123d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123f49190613b85565b856040518463ffffffff1660e01b81526004016124139392919061504e565b5f60405180830381865afa15801561242d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906124559190614278565b90505f5b815f0151518110156124c6575f825f0151828151811061247c5761247b613ab6565b5b60200260200101515f015151036124b957815f015181815181106124a3576124a2613ab6565b5b60200260200101516020015193505050506124ca565b8080600101915050612459565b5f80fd5b90565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b6124ee613000565b6124f6612f3f565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016125719061513c565b602060405180830381865afa15801561258c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b09190613b85565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016125fb906151a4565b602060405180830381865afa158015612616573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061263a9190613b85565b85856040518563ffffffff1660e01b815260040161265b9493929190614001565b5f604051808303815f875af1158015612676573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061269e9190614278565b505050565b6126ab612f3f565b81815f019067ffffffffffffffff16908167ffffffffffffffff1681525050600167ffffffffffffffff8111156126e5576126e4613084565b5b6040519080825280602002602001820160405280156127135781602001602082028036833780820191505090505b5081604001819052508281604001515f8151811061273457612733613ab6565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b815260040161278f92919061461a565b5f604051808303815f87803b1580156127a6575f80fd5b505af11580156127b8573d5f803e3d5ffd5b505050506127c4612f3f565b600167ffffffffffffffff8111156127df576127de613084565b5b60405190808252806020026020018201604052801561280d5781602001602082028036833780820191505090505b5081604001819052508381604001515f8151811061282e5761282d613ab6565b5b602002602001018181525050612842612f83565b61284a612fd1565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538885600186866040518663ffffffff1660e01b81526004016128a09594939291906148ab565b5f604051808303815f87803b1580156128b7575f80fd5b505af11580156128c9573d5f803e3d5ffd5b5050505050505050505050565b5f606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016129139061520c565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161299d9190615264565b5f604051808303815f865af19150503d805f81146129d6576040519150601f19603f3d011682016040523d82523d5f602084013e6129db565b606091505b50809250819350505081612a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1b906152c4565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f564b81ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612adf9190615264565b5f60405180830381855afa9150503d805f8114612b17576040519150601f19603f3d011682016040523d82523d5f602084013e612b1c565b606091505b50809250819350505081612b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5c90615352565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16604051602401612b9f906153ba565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612c299190615264565b5f60405180830381855afa9150503d805f8114612c61576040519150601f19603f3d011682016040523d82523d5f602084013e612c66565b606091505b5080925081935050508115612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790615448565b60405180910390fd5b5050565b6101f481565b5b6127105a10612cf5577ff9c7a13c2c2ddb716633ae77fd03fb7d2e3bf5ab3a45ba50ec2d3decc9ee650c60405160405180910390a1612cbb565b565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401612d449190614ddc565b5f604051808303815f87803b158015612d5b575f80fd5b505af1158015612d6d573d5f803e3d5ffd5b5050505050565b612d7c613013565b6020825114612dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db7906154b0565b60405180910390fd5b612dc8613013565b602267ffffffffffffffff811115612de357612de2613084565b5b6040519080825280601f01601f191660200182016040528015612e155781602001600182028036833780820191505090505b50815f0181905250600160f81b815f01515f81518110612e3857612e37613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60f81b815f0151600181518110612e8157612e80613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015612f3557838181518110612ecd57612ecc613ab6565b5b602001015160f81c60f81b825f0151600283612ee991906154ce565b81518110612efa57612ef9613ab6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050612eb1565b5080915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b604051806040016040528060608152602001606081525090565b6040518060a001604052805f63ffffffff1681526020015f63ffffffff168152602001612fae613000565b8152602001612fbb612f3f565b81526020015f67ffffffffffffffff1681525090565b60405180604001604052805f60070b8152602001612fed613026565b81525090565b61012a8061550283390190565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b60405180604001604052805f60070b8152602001613042613048565b81525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6130ba82613074565b810181811067ffffffffffffffff821117156130d9576130d8613084565b5b80604052505050565b5f6130eb61305b565b90506130f782826130b1565b919050565b5f67ffffffffffffffff82111561311657613115613084565b5b61311f82613074565b9050602081019050919050565b828183375f83830152505050565b5f61314c613147846130fc565b6130e2565b90508281526020810184848401111561316857613167613070565b5b61317384828561312c565b509392505050565b5f82601f83011261318f5761318e61306c565b5b813561319f84826020860161313a565b91505092915050565b5f602082840312156131bd576131bc613064565b5b5f82013567ffffffffffffffff8111156131da576131d9613068565b5b6131e68482850161317b565b91505092915050565b5f80fd5b5f80fd5b5f6020828403121561320c5761320b6131ef565b5b61321660206130e2565b90505f82013567ffffffffffffffff811115613235576132346131f3565b5b6132418482850161317b565b5f8301525092915050565b5f67ffffffffffffffff82169050919050565b6132688161324c565b8114613272575f80fd5b50565b5f813590506132838161325f565b92915050565b5f806040838503121561329f5761329e613064565b5b5f83013567ffffffffffffffff8111156132bc576132bb613068565b5b6132c8858286016131f7565b92505060206132d985828601613275565b9150509250929050565b5f63ffffffff82169050919050565b6132fb816132e3565b8114613305575f80fd5b50565b5f81359050613316816132f2565b92915050565b5f819050919050565b61332e8161331c565b8114613338575f80fd5b50565b5f8135905061334981613325565b92915050565b5f805f6060848603121561336657613365613064565b5b5f61337386828701613308565b93505060206133848682870161333b565b925050604061339586828701613275565b9150509250925092565b5f819050919050565b5f6133b28261339f565b9050919050565b6133c2816133a8565b82525050565b5f6020820190506133db5f8301846133b9565b92915050565b5f602082840312156133f6576133f56131ef565b5b61340060206130e2565b90505f82013567ffffffffffffffff81111561341f5761341e6131f3565b5b61342b8482850161317b565b5f8301525092915050565b5f67ffffffffffffffff8211156134505761344f613084565b5b602082029050602081019050919050565b5f80fd5b5f6020828403121561347a576134796131ef565b5b61348460206130e2565b90505f82013567ffffffffffffffff8111156134a3576134a26131f3565b5b6134af8482850161317b565b5f8301525092915050565b5f604082840312156134cf576134ce6131ef565b5b6134d960406130e2565b90505f82013567ffffffffffffffff8111156134f8576134f76131f3565b5b61350484828501613465565b5f8301525060206135178482850161333b565b60208301525092915050565b5f61353561353084613436565b6130e2565b9050808382526020820190506020840283018581111561355857613557613461565b5b835b8181101561359f57803567ffffffffffffffff81111561357d5761357c61306c565b5b80860161358a89826134ba565b8552602085019450505060208101905061355a565b5050509392505050565b5f82601f8301126135bd576135bc61306c565b5b81356135cd848260208601613523565b91505092915050565b5f67ffffffffffffffff8211156135f0576135ef613084565b5b602082029050602081019050919050565b61360a8161339f565b8114613614575f80fd5b50565b5f8135905061362581613601565b92915050565b5f61363d613638846135d6565b6130e2565b905080838252602082019050602084028301858111156136605761365f613461565b5b835b8181101561368957806136758882613617565b845260208401935050602081019050613662565b5050509392505050565b5f82601f8301126136a7576136a661306c565b5b81356136b784826020860161362b565b91505092915050565b5f606082840312156136d5576136d46131ef565b5b6136df60606130e2565b90505f6136ee84828501613275565b5f83015250602082013567ffffffffffffffff811115613711576137106131f3565b5b61371d848285016135a9565b602083015250604082013567ffffffffffffffff811115613741576137406131f3565b5b61374d84828501613693565b60408301525092915050565b5f806040838503121561376f5761376e613064565b5b5f83013567ffffffffffffffff81111561378c5761378b613068565b5b613798858286016133e1565b925050602083013567ffffffffffffffff8111156137b9576137b8613068565b5b6137c5858286016136c0565b9150509250929050565b5f602082840312156137e4576137e3613064565b5b5f6137f184828501613617565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613823826137fa565b9050919050565b61383381613819565b811461383d575f80fd5b50565b5f8135905061384e8161382a565b92915050565b5f806040838503121561386a57613869613064565b5b5f61387785828601613840565b92505060206138888582860161333b565b9150509250929050565b5f67ffffffffffffffff8211156138ac576138ab613084565b5b6138b582613074565b9050602081019050919050565b5f6138d46138cf84613892565b6130e2565b9050828152602081018484840111156138f0576138ef613070565b5b6138fb84828561312c565b509392505050565b5f82601f8301126139175761391661306c565b5b81356139278482602086016138c2565b91505092915050565b5f6020828403121561394557613944613064565b5b5f82013567ffffffffffffffff81111561396257613961613068565b5b61396e84828501613903565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6139a982613977565b6139b38185613981565b93506139c3818560208601613991565b6139cc81613074565b840191505092915050565b5f6020820190508181035f8301526139ef818461399f565b905092915050565b5f60208284031215613a0c57613a0b613064565b5b5f613a1984828501613840565b91505092915050565b5f805f60608486031215613a3957613a38613064565b5b5f84013567ffffffffffffffff811115613a5657613a55613068565b5b613a62868287016131f7565b9350506020613a7386828701613617565b9250506040613a8486828701613275565b9150509250925092565b613a978161324c565b82525050565b5f602082019050613ab05f830184613a8e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f6163636f756e74730000000000000000000000000000000000000000000000005f82015250565b5f613b27600883613ae3565b9150613b3282613af3565b602082019050919050565b5f6020820190508181035f830152613b5481613b1b565b9050919050565b613b64816132e3565b8114613b6e575f80fd5b50565b5f81519050613b7f81613b5b565b92915050565b5f60208284031215613b9a57613b99613064565b5b5f613ba784828501613b71565b91505092915050565b7f6d696e744e4654000000000000000000000000000000000000000000000000005f82015250565b5f613be4600783613ae3565b9150613bef82613bb0565b602082019050919050565b5f6020820190508181035f830152613c1181613bd8565b9050919050565b5f819050919050565b5f613c3b613c36613c31846132e3565b613c18565b6132e3565b9050919050565b613c4b81613c21565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f613c9482613977565b613c9e8185613c7a565b9350613cae818560208601613991565b613cb781613074565b840191505092915050565b5f604083015f8301518482035f860152613cdc8282613c8a565b91505060208301518482036020860152613cf68282613c8a565b9150508091505092915050565b5f613d0e8383613cc2565b905092915050565b5f602082019050919050565b5f613d2c82613c51565b613d368185613c5b565b935083602082028501613d4885613c6b565b805f5b85811015613d835784840389528151613d648582613d03565b9450613d6f83613d16565b925060208a01995050600181019050613d4b565b50829750879550505050505092915050565b5f602083015f8301518482035f860152613daf8282613d22565b9150508091505092915050565b613dc58161324c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f860152613e0e8282613c8a565b9150508091505092915050565b613e248161331c565b82525050565b5f604083015f8301518482035f860152613e448282613df4565b9150506020830151613e596020860182613e1b565b508091505092915050565b5f613e6f8383613e2a565b905092915050565b5f602082019050919050565b5f613e8d82613dcb565b613e978185613dd5565b935083602082028501613ea985613de5565b805f5b85811015613ee45784840389528151613ec58582613e64565b9450613ed083613e77565b925060208a01995050600181019050613eac565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f28816133a8565b82525050565b5f613f398383613f1f565b60208301905092915050565b5f602082019050919050565b5f613f5b82613ef6565b613f658185613f00565b9350613f7083613f10565b805f5b83811015613fa0578151613f878882613f2e565b9750613f9283613f45565b925050600181019050613f73565b5085935050505092915050565b5f606083015f830151613fc25f860182613dbc565b5060208301518482036020860152613fda8282613e83565b91505060408301518482036040860152613ff48282613f51565b9150508091505092915050565b5f6080820190506140145f830187613c42565b6140216020830186613c42565b81810360408301526140338185613d95565b905081810360608301526140478184613fad565b905095945050505050565b5f67ffffffffffffffff82111561406c5761406b613084565b5b602082029050602081019050919050565b5f61408f61408a846130fc565b6130e2565b9050828152602081018484840111156140ab576140aa613070565b5b6140b6848285613991565b509392505050565b5f82601f8301126140d2576140d161306c565b5b81516140e284826020860161407d565b91505092915050565b5f60408284031215614100576140ff6131ef565b5b61410a60406130e2565b90505f82015167ffffffffffffffff811115614129576141286131f3565b5b614135848285016140be565b5f83015250602082015167ffffffffffffffff811115614158576141576131f3565b5b614164848285016140be565b60208301525092915050565b5f61418261417d84614052565b6130e2565b905080838252602082019050602084028301858111156141a5576141a4613461565b5b835b818110156141ec57805167ffffffffffffffff8111156141ca576141c961306c565b5b8086016141d789826140eb565b855260208501945050506020810190506141a7565b5050509392505050565b5f82601f83011261420a5761420961306c565b5b815161421a848260208601614170565b91505092915050565b5f60208284031215614238576142376131ef565b5b61424260206130e2565b90505f82015167ffffffffffffffff811115614261576142606131f3565b5b61426d848285016141f6565b5f8301525092915050565b5f6020828403121561428d5761428c613064565b5b5f82015167ffffffffffffffff8111156142aa576142a9613068565b5b6142b684828501614223565b91505092915050565b5f6142c9826137fa565b9050919050565b6142d9816142bf565b82525050565b5f6020820190506142f25f8301846142d0565b92915050565b5f815190506143068161325f565b92915050565b5f60208284031215614321576143206131ef565b5b61432b60206130e2565b90505f82015167ffffffffffffffff81111561434a576143496131f3565b5b614356848285016140be565b5f8301525092915050565b5f8151905061436f81613325565b92915050565b5f6040828403121561438a576143896131ef565b5b61439460406130e2565b90505f82015167ffffffffffffffff8111156143b3576143b26131f3565b5b6143bf8482850161430c565b5f8301525060206143d284828501614361565b60208301525092915050565b5f6143f06143eb84613436565b6130e2565b9050808382526020820190506020840283018581111561441357614412613461565b5b835b8181101561445a57805167ffffffffffffffff8111156144385761443761306c565b5b8086016144458982614375565b85526020850194505050602081019050614415565b5050509392505050565b5f82601f8301126144785761447761306c565b5b81516144888482602086016143de565b91505092915050565b5f8151905061449f81613601565b92915050565b5f6144b76144b2846135d6565b6130e2565b905080838252602082019050602084028301858111156144da576144d9613461565b5b835b8181101561450357806144ef8882614491565b8452602084019350506020810190506144dc565b5050509392505050565b5f82601f8301126145215761452061306c565b5b81516145318482602086016144a5565b91505092915050565b5f6060828403121561454f5761454e6131ef565b5b61455960606130e2565b90505f614568848285016142f8565b5f83015250602082015167ffffffffffffffff81111561458b5761458a6131f3565b5b61459784828501614464565b602083015250604082015167ffffffffffffffff8111156145bb576145ba6131f3565b5b6145c78482850161450d565b60408301525092915050565b5f602082840312156145e8576145e7613064565b5b5f82015167ffffffffffffffff81111561460557614604613068565b5b6146118482850161453a565b91505092915050565b5f60408201905061462d5f8301856142d0565b818103602083015261463f8184613fad565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61467f8261324c565b915061468a8361324c565b9250828203905067ffffffffffffffff8111156146aa576146a9614648565b5b92915050565b5f602083015f8301518482035f8601526146ca8282613c8a565b9150508091505092915050565b5f8115159050919050565b6146eb816146d7565b82525050565b6146fa81613c21565b82525050565b5f602083015f8301518482035f86015261471a8282613d22565b9150508091505092915050565b5f606083015f83015161473c5f860182613dbc565b50602083015184820360208601526147548282613e83565b9150506040830151848203604086015261476e8282613f51565b9150508091505092915050565b5f60a083015f8301516147905f8601826146f1565b5060208301516147a360208601826146f1565b50604083015184820360408601526147bb8282614700565b915050606083015184820360608601526147d58282614727565b91505060808301516147ea6080860182613dbc565b508091505092915050565b5f8160070b9050919050565b61480a816147f5565b82525050565b5f602083015f8301518482035f86015261482a8282613c8a565b9150508091505092915050565b5f604083015f83015161484c5f860182614801565b50602083015184820360208601526148648282614810565b9150508091505092915050565b5f604083015f8301516148865f860182614801565b506020830151848203602086015261489e8282614837565b9150508091505092915050565b5f60a0820190508181035f8301526148c381886146b0565b905081810360208301526148d78187613fad565b90506148e660408301866146e2565b81810360608301526148f8818561477b565b9050818103608083015261490c8184614871565b90509695505050505050565b5f6020828403121561492d5761492c6131ef565b5b61493760206130e2565b90505f82015167ffffffffffffffff811115614956576149556131f3565b5b614962848285016140be565b5f8301525092915050565b5f6020828403121561498257614981613064565b5b5f82015167ffffffffffffffff81111561499f5761499e613068565b5b6149ab84828501614918565b91505092915050565b5f602082840312156149c9576149c86131ef565b5b6149d360206130e2565b90505f82015167ffffffffffffffff8111156149f2576149f16131f3565b5b6149fe848285016140be565b5f8301525092915050565b5f60208284031215614a1e57614a1d613064565b5b5f82015167ffffffffffffffff811115614a3b57614a3a613068565b5b614a47848285016149b4565b91505092915050565b5f602083015f8301518482035f860152614a6a8282613c8a565b9150508091505092915050565b5f6020820190508181035f830152614a8f8184614a50565b905092915050565b614aa08161339f565b8114614aaa575f80fd5b50565b5f81519050614abb81614a97565b92915050565b5f60208284031215614ad657614ad5613064565b5b5f614ae384828501614aad565b91505092915050565b614af58161339f565b82525050565b5f602082019050614b0e5f830184614aec565b92915050565b614b1d816132e3565b82525050565b614b2c8161331c565b82525050565b5f606082019050614b455f830186614b14565b614b526020830185614b23565b8181036040830152614b648184613fad565b9050949350505050565b5f602083015f8301518482035f860152614b888282613c8a565b9150508091505092915050565b5f6020820190508181035f830152614bad8184614b6e565b905092915050565b5f819050919050565b5f60ff82169050919050565b5f614be4614bdf614bda84614bb5565b613c18565b614bbe565b9050919050565b614bf481614bca565b82525050565b5f602082019050614c0d5f830184614beb565b92915050565b7f666f6f62617200000000000000000000000000000000000000000000000000005f82015250565b5f614c47600683613ae3565b9150614c5282614c13565b602082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b614c848161339f565b8114614c8e575f80fd5b50565b5f81519050614c9f81614c7b565b92915050565b5f60208284031215614cba57614cb9613064565b5b5f614cc784828501614c91565b91505092915050565b7f7472616e73666572416c6c6f77616e6365546f000000000000000000000000005f82015250565b5f614d04601383613ae3565b9150614d0f82614cd0565b602082019050919050565b5f6020820190508181035f830152614d3181614cf8565b9050919050565b5f819050919050565b614d52614d4d826133a8565b614d38565b82525050565b5f614d638284614d41565b60208201915081905092915050565b614d7b81613819565b82525050565b5f602082019050614d945f830184614d72565b92915050565b5f81519050919050565b5f614dae82614d9a565b614db88185613ae3565b9350614dc8818560208601613991565b614dd181613074565b840191505092915050565b5f6020820190508181035f830152614df48184614da4565b905092915050565b7f696e63636f756e746572000000000000000000000000000000000000000000005f82015250565b5f614e30600a83613ae3565b9150614e3b82614dfc565b602082019050919050565b5f6020820190508181035f830152614e5d81614e24565b9050919050565b7f696e63436f756e746572000000000000000000000000000000000000000000005f82015250565b5f614e98600a83613ae3565b9150614ea382614e64565b602082019050919050565b5f6020820190508181035f830152614ec581614e8c565b9050919050565b6b010000000000000000000000815250565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f819050919050565b614f23614f1e82614ede565b614f09565b82525050565b7604000000b3ee6942000000000000000000000000000000815250565b5f614f5082614ecc565b601582019150614f608284614f12565b601482019150614f6f82614f29565b60118201915081905092915050565b7f65766d00000000000000000000000000000000000000000000000000000000005f82015250565b5f614fb2600383613ae3565b9150614fbd82614f7e565b602082019050919050565b5f6020820190508181035f830152614fdf81614fa6565b9050919050565b7f63616c6c436f6e747261637400000000000000000000000000000000000000005f82015250565b5f61501a600c83613ae3565b915061502582614fe6565b602082019050919050565b5f6020820190508181035f8301526150478161500e565b9050919050565b5f6060820190506150615f830186613c42565b61506e6020830185613c42565b81810360408301526150808184613d95565b9050949350505050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f6150be600783613ae3565b91506150c98261508a565b602082019050919050565b5f6020820190508181035f8301526150eb816150b2565b9050919050565b7f676f7665726e616e6365000000000000000000000000000000000000000000005f82015250565b5f615126600a83613ae3565b9150615131826150f2565b602082019050919050565b5f6020820190508181035f8301526151538161511a565b9050919050565b7f636c61696d436861696e4f776e657273686970000000000000000000000000005f82015250565b5f61518e601383613ae3565b91506151998261515a565b602082019050919050565b5f6020820190508181035f8301526151bb81615182565b9050919050565b7f6e6f6e2d737461746963000000000000000000000000000000000000000000005f82015250565b5f6151f6600a83613ae3565b9150615201826151c2565b602082019050919050565b5f6020820190508181035f830152615223816151ea565b9050919050565b5f81905092915050565b5f61523e82613977565b615248818561522a565b9350615258818560208601613991565b80840191505092915050565b5f61526f8284615234565b915081905092915050565b7f63616c6c2073686f756c642073756363656564000000000000000000000000005f82015250565b5f6152ae601383613ae3565b91506152b98261527a565b602082019050919050565b5f6020820190508181035f8301526152db816152a2565b9050919050565b7f73746174696363616c6c20746f20766965772073686f756c64207375636365655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f61533c602183613ae3565b9150615347826152e2565b604082019050919050565b5f6020820190508181035f83015261536981615330565b9050919050565b7f73746174696300000000000000000000000000000000000000000000000000005f82015250565b5f6153a4600683613ae3565b91506153af82615370565b602082019050919050565b5f6020820190508181035f8301526153d181615398565b9050919050565b7f73746174696363616c6c20746f206e6f6e2d766965772073686f756c642066615f8201527f696c000000000000000000000000000000000000000000000000000000000000602082015250565b5f615432602283613ae3565b915061543d826153d8565b604082019050919050565b5f6020820190508181035f83015261545f81615426565b9050919050565b7f6261642061646472657373206c656e67746800000000000000000000000000005f82015250565b5f61549a601283613ae3565b91506154a582615466565b602082019050919050565b5f6020820190508181035f8301526154c78161548e565b9050919050565b5f6154d88261331c565b91506154e38361331c565b92508282019050808211156154fb576154fa614648565b5b9291505056fe6080604052348015600e575f80fd5b5061010e8061001c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063bcfb195914602a575b5f80fd5b60406004803603810190603c919060b2565b6042565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f608682605f565b9050919050565b609481607e565b8114609d575f80fd5b50565b5f8135905060ac81608d565b92915050565b5f6020828403121560c45760c3605b565b5b5f60cf8482850160a0565b9150509291505056fea2646970667358221220620f1712e103636cea06552d4318eaebfa9d20b5c50fbd6fc580405a558f9fad64736f6c634300081a0033a264697066735822122064f75291ade5b8e1c51674b6b4c937fb7a8e9bf9a0bc99de19759c3e76e2e70a64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/SelfDestruct6780.bin b/packages/evm/evmtest/SelfDestruct6780.bin index 4a5e8bd60e..c83ed905e2 100644 --- a/packages/evm/evmtest/SelfDestruct6780.bin +++ b/packages/evm/evmtest/SelfDestruct6780.bin @@ -1 +1 @@ -6080604052348015600e575f80fd5b5061010e8061001c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063bcfb195914602a575b5f80fd5b60406004803603810190603c919060b2565b6042565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f608682605f565b9050919050565b609481607e565b8114609d575f80fd5b50565b5f8135905060ac81608d565b92915050565b5f6020828403121560c45760c3605b565b5b5f60cf8482850160a0565b9150509291505056fea2646970667358221220c545e030768d61daa0411c6fc386c0dafc130882b06268fed99feec06c2aa12064736f6c634300081a0033 \ No newline at end of file +6080604052348015600e575f80fd5b5061010e8061001c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063bcfb195914602a575b5f80fd5b60406004803603810190603c919060b2565b6042565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f608682605f565b9050919050565b609481607e565b8114609d575f80fd5b50565b5f8135905060ac81608d565b92915050565b5f6020828403121560c45760c3605b565b5b5f60cf8482850160a0565b9150509291505056fea2646970667358221220620f1712e103636cea06552d4318eaebfa9d20b5c50fbd6fc580405a558f9fad64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/wiki_how_tos/GetBalance.bin b/packages/evm/evmtest/wiki_how_tos/GetBalance.bin index a1349b6c02..8da9851c0b 100644 --- a/packages/evm/evmtest/wiki_how_tos/GetBalance.bin +++ b/packages/evm/evmtest/wiki_how_tos/GetBalance.bin @@ -1 +1 @@ -6080604052348015600e575f80fd5b50610ab28061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c806319a5506a1461004e57806341d9834c1461005857806390cdadcd14610074578063cdfd0a661461007e575b5f80fd5b610056610088565b005b610072600480360381019061006d91906106a2565b6101d9565b005b61007c610340565b005b610086610404565b005b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa1580156100e5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061010d91906107c2565b90505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b815260040161015d9190610882565b602060405180830381865afa158015610178573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019c91906108d5565b90507f52c249d568f18754049ea99591153f1f0ad8c7ab03a3bcdcf8454bc274e54101816040516101cd919061090f565b60405180910390a15050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610236573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061025e91906107c2565b90505f60405180602001604052808481525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d83856040518363ffffffff1660e01b81526004016102c292919061094f565b602060405180830381865afa1580156102dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030191906108d5565b90507fab4abdf0d66655ed9c7e1ee2f2aff1d43dbdc0736a3e7078c2be95bcf380057581604051610332919061090f565b60405180910390a150505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103c591906107c2565b90507f28b3d377892d8db500fb9a9bbd4731605ca2a642c3c62a7e64d47b7d42024368815f01516040516103f991906109cc565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610461573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061048991906107c2565b90505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f836040518263ffffffff1660e01b81526004016104d99190610882565b602060405180830381865afa1580156104f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105189190610a29565b90507f23ce6861f26687742455d6955fcd53a5587ecf279e37422d0cd9636e2a2a9f7f816040516105499190610a63565b60405180910390a15050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105b48261056e565b810181811067ffffffffffffffff821117156105d3576105d261057e565b5b80604052505050565b5f6105e5610555565b90506105f182826105ab565b919050565b5f67ffffffffffffffff8211156106105761060f61057e565b5b6106198261056e565b9050602081019050919050565b828183375f83830152505050565b5f610646610641846105f6565b6105dc565b9050828152602081018484840111156106625761066161056a565b5b61066d848285610626565b509392505050565b5f82601f83011261068957610688610566565b5b8135610699848260208601610634565b91505092915050565b5f602082840312156106b7576106b661055e565b5b5f82013567ffffffffffffffff8111156106d4576106d3610562565b5b6106e084828501610675565b91505092915050565b5f80fd5b5f80fd5b8281835e5f83830152505050565b5f61071161070c846105f6565b6105dc565b90508281526020810184848401111561072d5761072c61056a565b5b6107388482856106f1565b509392505050565b5f82601f83011261075457610753610566565b5b81516107648482602086016106ff565b91505092915050565b5f60208284031215610782576107816106e9565b5b61078c60206105dc565b90505f82015167ffffffffffffffff8111156107ab576107aa6106ed565b5b6107b784828501610740565b5f8301525092915050565b5f602082840312156107d7576107d661055e565b5b5f82015167ffffffffffffffff8111156107f4576107f3610562565b5b6108008482850161076d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61082d82610809565b6108378185610813565b93506108478185602086016106f1565b6108508161056e565b840191505092915050565b5f602083015f8301518482035f8601526108758282610823565b9150508091505092915050565b5f6020820190508181035f83015261089a818461085b565b905092915050565b5f819050919050565b6108b4816108a2565b81146108be575f80fd5b50565b5f815190506108cf816108ab565b92915050565b5f602082840312156108ea576108e961055e565b5b5f6108f7848285016108c1565b91505092915050565b610909816108a2565b82525050565b5f6020820190506109225f830184610900565b92915050565b5f602083015f8301518482035f8601526109428282610823565b9150508091505092915050565b5f6040820190508181035f8301526109678185610928565b9050818103602083015261097b818461085b565b90509392505050565b5f82825260208201905092915050565b5f61099e82610809565b6109a88185610984565b93506109b88185602086016106f1565b6109c18161056e565b840191505092915050565b5f6020820190508181035f8301526109e48184610994565b905092915050565b5f67ffffffffffffffff82169050919050565b610a08816109ec565b8114610a12575f80fd5b50565b5f81519050610a23816109ff565b92915050565b5f60208284031215610a3e57610a3d61055e565b5b5f610a4b84828501610a15565b91505092915050565b610a5d816109ec565b82525050565b5f602082019050610a765f830184610a54565b9291505056fea26469706673582212201305cd24dc5a8f09ab0f20f7149275842101d3e9bbb235941608cb65e3574c9864736f6c634300081a0033 \ No newline at end of file +6080604052348015600e575f80fd5b50610ab28061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c806319a5506a1461004e57806341d9834c1461005857806390cdadcd14610074578063cdfd0a661461007e575b5f80fd5b610056610088565b005b610072600480360381019061006d91906106a2565b6101d9565b005b61007c610340565b005b610086610404565b005b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa1580156100e5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061010d91906107c2565b90505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b815260040161015d9190610882565b602060405180830381865afa158015610178573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019c91906108d5565b90507f52c249d568f18754049ea99591153f1f0ad8c7ab03a3bcdcf8454bc274e54101816040516101cd919061090f565b60405180910390a15050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610236573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061025e91906107c2565b90505f60405180602001604052808481525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d83856040518363ffffffff1660e01b81526004016102c292919061094f565b602060405180830381865afa1580156102dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030191906108d5565b90507fab4abdf0d66655ed9c7e1ee2f2aff1d43dbdc0736a3e7078c2be95bcf380057581604051610332919061090f565b60405180910390a150505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103c591906107c2565b90507f28b3d377892d8db500fb9a9bbd4731605ca2a642c3c62a7e64d47b7d42024368815f01516040516103f991906109cc565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610461573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061048991906107c2565b90505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f836040518263ffffffff1660e01b81526004016104d99190610882565b602060405180830381865afa1580156104f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105189190610a29565b90507f23ce6861f26687742455d6955fcd53a5587ecf279e37422d0cd9636e2a2a9f7f816040516105499190610a63565b60405180910390a15050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105b48261056e565b810181811067ffffffffffffffff821117156105d3576105d261057e565b5b80604052505050565b5f6105e5610555565b90506105f182826105ab565b919050565b5f67ffffffffffffffff8211156106105761060f61057e565b5b6106198261056e565b9050602081019050919050565b828183375f83830152505050565b5f610646610641846105f6565b6105dc565b9050828152602081018484840111156106625761066161056a565b5b61066d848285610626565b509392505050565b5f82601f83011261068957610688610566565b5b8135610699848260208601610634565b91505092915050565b5f602082840312156106b7576106b661055e565b5b5f82013567ffffffffffffffff8111156106d4576106d3610562565b5b6106e084828501610675565b91505092915050565b5f80fd5b5f80fd5b8281835e5f83830152505050565b5f61071161070c846105f6565b6105dc565b90508281526020810184848401111561072d5761072c61056a565b5b6107388482856106f1565b509392505050565b5f82601f83011261075457610753610566565b5b81516107648482602086016106ff565b91505092915050565b5f60208284031215610782576107816106e9565b5b61078c60206105dc565b90505f82015167ffffffffffffffff8111156107ab576107aa6106ed565b5b6107b784828501610740565b5f8301525092915050565b5f602082840312156107d7576107d661055e565b5b5f82015167ffffffffffffffff8111156107f4576107f3610562565b5b6108008482850161076d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61082d82610809565b6108378185610813565b93506108478185602086016106f1565b6108508161056e565b840191505092915050565b5f602083015f8301518482035f8601526108758282610823565b9150508091505092915050565b5f6020820190508181035f83015261089a818461085b565b905092915050565b5f819050919050565b6108b4816108a2565b81146108be575f80fd5b50565b5f815190506108cf816108ab565b92915050565b5f602082840312156108ea576108e961055e565b5b5f6108f7848285016108c1565b91505092915050565b610909816108a2565b82525050565b5f6020820190506109225f830184610900565b92915050565b5f602083015f8301518482035f8601526109428282610823565b9150508091505092915050565b5f6040820190508181035f8301526109678185610928565b9050818103602083015261097b818461085b565b90509392505050565b5f82825260208201905092915050565b5f61099e82610809565b6109a88185610984565b93506109b88185602086016106f1565b6109c18161056e565b840191505092915050565b5f6020820190508181035f8301526109e48184610994565b905092915050565b5f67ffffffffffffffff82169050919050565b610a08816109ec565b8114610a12575f80fd5b50565b5f81519050610a23816109ff565b92915050565b5f60208284031215610a3e57610a3d61055e565b5b5f610a4b84828501610a15565b91505092915050565b610a5d816109ec565b82525050565b5f602082019050610a765f830184610a54565b9291505056fea2646970667358221220f402e3f7945e4c6e1c0fbd71080d66d2443321647f95f9d86d8499a0b44ec42864736f6c634300081a0033 \ No newline at end of file diff --git a/packages/isc/irc27nft.go b/packages/isc/irc27nft.go index 7de1524a3e..7b18ea8e69 100644 --- a/packages/isc/irc27nft.go +++ b/packages/isc/irc27nft.go @@ -14,10 +14,10 @@ type IRC27NFTMetadata struct { Royalties map[string]float32 `json:"royalties,omitempty"` IssuerName string `json:"issuerName,omitempty"` Description string `json:"description,omitempty"` - Attributes string `json:"attributes,omitempty"` + Attributes []interface{} `json:"attributes,omitempty"` } -func NewIRC27NFTMetadata(mimeType, uri, name, attributes string) *IRC27NFTMetadata { +func NewIRC27NFTMetadata(mimeType, uri, name string, attributes []interface{}) *IRC27NFTMetadata { return &IRC27NFTMetadata{ Standard: "IRC27", Version: "v1.0", diff --git a/packages/isc/irc27nft_test.go b/packages/isc/irc27nft_test.go index 14633ad68a..79da4853f3 100644 --- a/packages/isc/irc27nft_test.go +++ b/packages/isc/irc27nft_test.go @@ -3,6 +3,8 @@ package isc_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/iotaledger/wasp/packages/isc" "github.com/iotaledger/wasp/packages/util/rwutil" ) @@ -11,6 +13,30 @@ func TestIRC27NFTSerialization(t *testing.T) { testMIME := "fakeMIME" testURL := "http://no.org" testName := "hi-name" - metadata := isc.NewIRC27NFTMetadata(testMIME, testURL, testName, `[{"trait_type": "Foo", "value": "Bar"}]`) + metadata := isc.NewIRC27NFTMetadata(testMIME, testURL, testName, []interface{}{`{"trait_type": "Foo", "value": "Bar"}`}) rwutil.BytesTest(t, metadata, isc.IRC27NFTMetadataFromBytes) } + +const sampleIRC27JSON = `{ +"standard": "IRC27", +"version": "v1.0", +"name": "test-attr-2", +"type": "text/html; charset=UTF-8", +"uri": "https://google.de", +"attributes": [ + { + "trait_type": "Base", + "value": "Starfish" + }, + { + "trait_type": "Eyes", + "value": "Big" + } +] +}` + +func TestIRC27FromJSON(t *testing.T) { + parsed, err := isc.IRC27NFTMetadataFromBytes([]byte(sampleIRC27JSON)) + require.NoError(t, err) + println(parsed) +} diff --git a/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex b/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex index b7002150f9..b20b9e681a 100644 --- a/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex +++ b/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex @@ -1 +1 @@ -0xcb3b09f08db03598d5785be41bf1e8ff69c26e902137a8c1f63fd670e2d533a5 +0xd47bac88135e5c7cce511a77283488e0c0cd855d7a92be7b5871c0e2abde59fb diff --git a/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex b/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex index b3ef3d6cd6..51d38f2551 100644 --- a/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex +++ b/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex @@ -1 +1 @@ -0x1fb3b3efc21aa61f615b90b738730b7c5078202cc8f28d4c862baa4b6f58a256 +0x34c39b96da1afa50702c2d456b95b5f1c63101515ec732d739241509554038fe diff --git a/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex b/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex index f370b36134..1d16f15e4f 100644 --- a/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex +++ b/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex @@ -1 +1 @@ -0x537c3ee06462d9086d3602f27a46c36940ce8aeef0e98571d37ed17578a90b3e +0x50c6164b6052b8b65f8536f380849a418873db19005cd6f3fa516e254c07e54a diff --git a/packages/testutil/testdbhash/TestGetEvents-blocklog.hex b/packages/testutil/testdbhash/TestGetEvents-blocklog.hex index 1637c50c54..5dd8c4b8e9 100644 --- a/packages/testutil/testdbhash/TestGetEvents-blocklog.hex +++ b/packages/testutil/testdbhash/TestGetEvents-blocklog.hex @@ -1 +1 @@ -0x6e59e0c0b3388e66ca1106d1d384952899e9ee09db1819f7d4bf39e02e2cab3b +0xabbf03253c5f271abcf9c4721d21e27e42b00291623f77dfd7fd90cdca69824c diff --git a/packages/testutil/testdbhash/TestInitLoad.hex b/packages/testutil/testdbhash/TestInitLoad.hex index a0b2be6e9e..2c36a2d94d 100644 --- a/packages/testutil/testdbhash/TestInitLoad.hex +++ b/packages/testutil/testdbhash/TestInitLoad.hex @@ -1 +1 @@ -0xe37489cacd8c066a00f3cf0aca0015b2f8fc1c4ea2417a18ab1c3dca7e6b0559 +0x7b598408e002117a9b77f12ae4208b723c5d03a76fd952d4c4995155b14c7e2c diff --git a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex index 7aefb3e22b..8ca83ac8ca 100644 --- a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex +++ b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex @@ -1 +1 @@ -0xcbc6d3ebde280d1c98c454b50483d90fa828b5ae2620a086da6c72f9295927f2 +0xa4cfe59bbd32ef63df2dfdb4c620394563cb1f62668100e2a253fc88a0cd82b8 diff --git a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex index 560230a474..e914f74ca0 100644 --- a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex +++ b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex @@ -1 +1 @@ -0x9d600e1f99cbc893aa43dccb94dd59a03b635890cf7b8574c8605295b33eaa2b +0xabf08f5101b2c9a9d1fb41f0430e997b8c60d0126b3a0f697ff7494f63b7bc24 diff --git a/packages/testutil/testdbhash/TestSelfDestruct-evm.hex b/packages/testutil/testdbhash/TestSelfDestruct-evm.hex index 9117a7f9df..24b4fbf621 100644 --- a/packages/testutil/testdbhash/TestSelfDestruct-evm.hex +++ b/packages/testutil/testdbhash/TestSelfDestruct-evm.hex @@ -1 +1 @@ -0x6c162882de7133f9192f2eba02fd36a5437a353919e3c3c4842f6b5e5c5f79f4 +0xa35142e045b50d36fb1853eba7948939b9f375abc6ef952331cf9efe043c1f4a diff --git a/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex b/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex index 491b3a795a..d018c769e2 100644 --- a/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex +++ b/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex @@ -1 +1 @@ -0xd3a01e44768150fac49f4b76fb069aaf7b22c0fbcac7a6b1c4125bcf24d009dd +0xf4cc6ebc75591d8d2bb28e93a6128baee5d93b3fd27887d4ca0e415daa8984f5 diff --git a/packages/testutil/testdbhash/TestStorageContract-evm.hex b/packages/testutil/testdbhash/TestStorageContract-evm.hex index 07216fe0bc..ee30a49252 100644 --- a/packages/testutil/testdbhash/TestStorageContract-evm.hex +++ b/packages/testutil/testdbhash/TestStorageContract-evm.hex @@ -1 +1 @@ -0xf947695a32a4a3bd1a33c878a39f37f3db4e8cffb98b60d9c10ac38af1703cf5 +0xa0b861838e8194d49f4ef49aa95395bc62ee0bb6661ee009ba9593a0f334cb03 diff --git a/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex b/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex index 7c2adb03e6..f32a9731a5 100644 --- a/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex +++ b/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex @@ -1 +1 @@ -0x6aa9785ecccf62b58eb7421c29cb620cf21852e7f999578b19d83ac65c96ccba +0xe65fd873c61e74d8a89a6c7e67470a0be8a5b7c3a8933fdcc9603988c5d5db13 diff --git a/packages/vm/core/evm/evmtest/evm_test.go b/packages/vm/core/evm/evmtest/evm_test.go index b37c39b30b..44ace46002 100644 --- a/packages/vm/core/evm/evmtest/evm_test.go +++ b/packages/vm/core/evm/evmtest/evm_test.go @@ -1118,7 +1118,7 @@ func TestERC721NFTCollection(t *testing.T) { "text/html", "https://my-awesome-nft-project.com", "a string that is longer than 32 bytes", - `[{"trait_type": "collection", "value": "super"}]`, + []interface{}{`{"trait_type": "collection", "value": "super"}`}, ) collection, collectionInfo, err := env.solo.MintNFTL1(collectionOwner, collectionOwnerAddr, collectionMetadata.Bytes()) @@ -1129,13 +1129,13 @@ func TestERC721NFTCollection(t *testing.T) { "application/json", "https://my-awesome-nft-project.com/1.json", "nft1", - `[{"trait_type": "Foo", "value": "Bar"}]`, + []interface{}{`{"trait_type": "Foo", "value": "Bar"}`}, ), isc.NewIRC27NFTMetadata( "application/json", "https://my-awesome-nft-project.com/2.json", "nft2", - `[{"trait_type": "Bar", "value": "Baz"}]`, + []interface{}{`{"trait_type": "Bar", "value": "Baz"}`}, ), } allNFTs, _, err := env.solo.MintNFTsL1(collectionOwner, collectionOwnerAddr, &collectionInfo.OutputID, diff --git a/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime index 3acad97975..43e78a409f 100644 --- a/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610d59565b60405180910390f35b6100cd60048036038101906100c89190610e17565b61028b565b6040516100da9190610e6f565b60405180910390f35b6100eb610379565b6040516100f89190610e97565b60405180910390f35b61011b60048036038101906101169190610eb0565b610407565b6040516101289190610e6f565b60405180910390f35b61013961061d565b6040516101469190610f1b565b60405180910390f35b61016960048036038101906101649190610f34565b6106ab565b6040516101769190610e97565b60405180910390f35b6101876107dc565b6040516101949190610d59565b60405180910390f35b6101b760048036038101906101b29190610e17565b61086b565b6040516101c49190610e6f565b60405180910390f35b6101e760048036038101906101e29190610f5f565b6109ce565b6040516101f49190610e97565b60405180910390f35b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561025b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061028391906111ae565b5f0151905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663173263c63385856040518463ffffffff1660e01b81526004016102dd93929190611204565b5f604051808303815f87803b1580156102f4575f80fd5b505af1158015610306573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103679190610e97565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156103d6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103fe91906111ae565b60600151905090565b5f67ffffffffffffffff8016821115610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c90611283565b60405180910390fd5b61045d610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104cd93929190611565565b5f604051808303815f87803b1580156104e4575f80fd5b505af11580156104f6573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ac5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057e93929190611565565b5f604051808303815f87803b158015610595575f80fd5b505af11580156105a7573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106099190610e97565b60405180910390a360019150509392505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561067a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106a291906111ae565b60400151905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e91906115cb565b90505f61073b8483610a7a565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f826040518263ffffffff1660e01b815260040161078a919061161d565b602060405180830381865afa1580156107a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c99190611667565b67ffffffffffffffff1692505050919050565b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561083a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061086291906111ae565b60200151905090565b5f67ffffffffffffffff80168211156108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090611283565b60405180910390fd5b6108c1610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161093193929190611565565b5f604051808303815f87803b158015610948575f80fd5b505af115801561095a573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109bb9190610e97565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a1f929190611692565b5f60405180830381865afa158015610a39573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a619190611a7a565b9050805f015167ffffffffffffffff1691505092915050565b610a82610cd6565b5f82604051602001610a949190611ae1565b60405160208183030381529060405290505f84604051602001610ab79190611b40565b6040516020818303038152906040529050610ad0610cd6565b825182516001610ae09190611b87565b610aea9190611b87565b67ffffffffffffffff811115610b0357610b02610fa1565b5b6040519080825280601f01601f191660200182016040528015610b355781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610b5857610b57611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610c0c57838181518110610ba457610ba3611bba565b5b602001015160f81c60f81b825f0151600183610bc09190611b87565b81518110610bd157610bd0611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610b88565b505f5b8251811015610c9f57828181518110610c2b57610c2a611bba565b5b602001015160f81c60f81b825f01518551600184610c499190611b87565b610c539190611b87565b81518110610c6457610c63611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c0f565b5080935050505092915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d2b82610ce9565b610d358185610cf3565b9350610d45818560208601610d03565b610d4e81610d11565b840191505092915050565b5f6020820190508181035f830152610d718184610d21565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610db382610d8a565b9050919050565b610dc381610da9565b8114610dcd575f80fd5b50565b5f81359050610dde81610dba565b92915050565b5f819050919050565b610df681610de4565b8114610e00575f80fd5b50565b5f81359050610e1181610ded565b92915050565b5f8060408385031215610e2d57610e2c610d82565b5b5f610e3a85828601610dd0565b9250506020610e4b85828601610e03565b9150509250929050565b5f8115159050919050565b610e6981610e55565b82525050565b5f602082019050610e825f830184610e60565b92915050565b610e9181610de4565b82525050565b5f602082019050610eaa5f830184610e88565b92915050565b5f805f60608486031215610ec757610ec6610d82565b5b5f610ed486828701610dd0565b9350506020610ee586828701610dd0565b9250506040610ef686828701610e03565b9150509250925092565b5f60ff82169050919050565b610f1581610f00565b82525050565b5f602082019050610f2e5f830184610f0c565b92915050565b5f60208284031215610f4957610f48610d82565b5b5f610f5684828501610dd0565b91505092915050565b5f8060408385031215610f7557610f74610d82565b5b5f610f8285828601610dd0565b9250506020610f9385828601610dd0565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610fd782610d11565b810181811067ffffffffffffffff82111715610ff657610ff5610fa1565b5b80604052505050565b5f611008610d79565b90506110148282610fce565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561103f5761103e610fa1565b5b61104882610d11565b9050602081019050919050565b5f61106761106284611025565b610fff565b90508281526020810184848401111561108357611082611021565b5b61108e848285610d03565b509392505050565b5f82601f8301126110aa576110a961101d565b5b81516110ba848260208601611055565b91505092915050565b6110cc81610f00565b81146110d6575f80fd5b50565b5f815190506110e7816110c3565b92915050565b5f815190506110fb81610ded565b92915050565b5f6080828403121561111657611115610f9d565b5b6111206080610fff565b90505f82015167ffffffffffffffff81111561113f5761113e611019565b5b61114b84828501611096565b5f83015250602082015167ffffffffffffffff81111561116e5761116d611019565b5b61117a84828501611096565b602083015250604061118e848285016110d9565b60408301525060606111a2848285016110ed565b60608301525092915050565b5f602082840312156111c3576111c2610d82565b5b5f82015167ffffffffffffffff8111156111e0576111df610d86565b5b6111ec84828501611101565b91505092915050565b6111fe81610da9565b82525050565b5f6060820190506112175f8301866111f5565b61122460208301856111f5565b6112316040830184610e88565b949350505050565b7f616d6f756e7420697320746f6f206c61726765000000000000000000000000005f82015250565b5f61126d601383610cf3565b915061127882611239565b602082019050919050565b5f6020820190508181035f83015261129a81611261565b9050919050565b5f67ffffffffffffffff82169050919050565b6112bd816112a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611310826112ec565b61131a81856112f6565b935061132a818560208601610d03565b61133381610d11565b840191505092915050565b5f602083015f8301518482035f8601526113588282611306565b9150508091505092915050565b61136e81610de4565b82525050565b5f604083015f8301518482035f86015261138e828261133e565b91505060208301516113a36020860182611365565b508091505092915050565b5f6113b98383611374565b905092915050565b5f602082019050919050565b5f6113d7826112c3565b6113e181856112cd565b9350836020820285016113f3856112dd565b805f5b8581101561142e578484038952815161140f85826113ae565b945061141a836113c1565b925060208a019950506001810190506113f6565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61147c82611469565b9050919050565b61148c81611472565b82525050565b5f61149d8383611483565b60208301905092915050565b5f602082019050919050565b5f6114bf82611440565b6114c9818561144a565b93506114d48361145a565b805f5b838110156115045781516114eb8882611492565b97506114f6836114a9565b9250506001810190506114d7565b5085935050505092915050565b5f606083015f8301516115265f8601826112b4565b506020830151848203602086015261153e82826113cd565b9150506040830151848203604086015261155882826114b5565b9150508091505092915050565b5f6060820190506115785f8301866111f5565b61158560208301856111f5565b81810360408301526115978184611511565b9050949350505050565b6115aa81611469565b81146115b4575f80fd5b50565b5f815190506115c5816115a1565b92915050565b5f602082840312156115e0576115df610d82565b5b5f6115ed848285016115b7565b91505092915050565b5f602083015f8301518482035f8601526116108282611306565b9150508091505092915050565b5f6020820190508181035f83015261163581846115f6565b905092915050565b611646816112a1565b8114611650575f80fd5b50565b5f815190506116618161163d565b92915050565b5f6020828403121561167c5761167b610d82565b5b5f61168984828501611653565b91505092915050565b5f6040820190506116a55f8301856111f5565b6116b260208301846111f5565b9392505050565b5f67ffffffffffffffff8211156116d3576116d2610fa1565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561170257611701610fa1565b5b61170b82610d11565b9050602081019050919050565b5f61172a611725846116e8565b610fff565b90508281526020810184848401111561174657611745611021565b5b611751848285610d03565b509392505050565b5f82601f83011261176d5761176c61101d565b5b815161177d848260208601611718565b91505092915050565b5f6020828403121561179b5761179a610f9d565b5b6117a56020610fff565b90505f82015167ffffffffffffffff8111156117c4576117c3611019565b5b6117d084828501611759565b5f8301525092915050565b5f604082840312156117f0576117ef610f9d565b5b6117fa6040610fff565b90505f82015167ffffffffffffffff81111561181957611818611019565b5b61182584828501611786565b5f830152506020611838848285016110ed565b60208301525092915050565b5f611856611851846116b9565b610fff565b90508083825260208201905060208402830185811115611879576118786116e4565b5b835b818110156118c057805167ffffffffffffffff81111561189e5761189d61101d565b5b8086016118ab89826117db565b8552602085019450505060208101905061187b565b5050509392505050565b5f82601f8301126118de576118dd61101d565b5b81516118ee848260208601611844565b91505092915050565b5f67ffffffffffffffff82111561191157611910610fa1565b5b602082029050602081019050919050565b61192b81611469565b8114611935575f80fd5b50565b5f8151905061194681611922565b92915050565b5f61195e611959846118f7565b610fff565b90508083825260208201905060208402830185811115611981576119806116e4565b5b835b818110156119aa57806119968882611938565b845260208401935050602081019050611983565b5050509392505050565b5f82601f8301126119c8576119c761101d565b5b81516119d884826020860161194c565b91505092915050565b5f606082840312156119f6576119f5610f9d565b5b611a006060610fff565b90505f611a0f84828501611653565b5f83015250602082015167ffffffffffffffff811115611a3257611a31611019565b5b611a3e848285016118ca565b602083015250604082015167ffffffffffffffff811115611a6257611a61611019565b5b611a6e848285016119b4565b60408301525092915050565b5f60208284031215611a8f57611a8e610d82565b5b5f82015167ffffffffffffffff811115611aac57611aab610d86565b5b611ab8848285016119e1565b91505092915050565b5f819050919050565b611adb611ad682611472565b611ac1565b82525050565b5f611aec8284611aca565b60208201915081905092915050565b5f8160601b9050919050565b5f611b1182611afb565b9050919050565b5f611b2282611b07565b9050919050565b611b3a611b3582610da9565b611b18565b82525050565b5f611b4b8284611b29565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b9182610de4565b9150611b9c83610de4565b9250828201905080821115611bb457611bb3611b5a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220ff65c44d1ad9b2379a13b2e3dbe6ff4c9031521d466905e3b8afdaa7ee0c26c664736f6c634300081a0033 \ No newline at end of file +608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610d59565b60405180910390f35b6100cd60048036038101906100c89190610e17565b61028b565b6040516100da9190610e6f565b60405180910390f35b6100eb610379565b6040516100f89190610e97565b60405180910390f35b61011b60048036038101906101169190610eb0565b610407565b6040516101289190610e6f565b60405180910390f35b61013961061d565b6040516101469190610f1b565b60405180910390f35b61016960048036038101906101649190610f34565b6106ab565b6040516101769190610e97565b60405180910390f35b6101876107dc565b6040516101949190610d59565b60405180910390f35b6101b760048036038101906101b29190610e17565b61086b565b6040516101c49190610e6f565b60405180910390f35b6101e760048036038101906101e29190610f5f565b6109ce565b6040516101f49190610e97565b60405180910390f35b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561025b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061028391906111ae565b5f0151905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663173263c63385856040518463ffffffff1660e01b81526004016102dd93929190611204565b5f604051808303815f87803b1580156102f4575f80fd5b505af1158015610306573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103679190610e97565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156103d6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103fe91906111ae565b60600151905090565b5f67ffffffffffffffff8016821115610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c90611283565b60405180910390fd5b61045d610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104cd93929190611565565b5f604051808303815f87803b1580156104e4575f80fd5b505af11580156104f6573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ac5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057e93929190611565565b5f604051808303815f87803b158015610595575f80fd5b505af11580156105a7573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106099190610e97565b60405180910390a360019150509392505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561067a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106a291906111ae565b60400151905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e91906115cb565b90505f61073b8483610a7a565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f826040518263ffffffff1660e01b815260040161078a919061161d565b602060405180830381865afa1580156107a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c99190611667565b67ffffffffffffffff1692505050919050565b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561083a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061086291906111ae565b60200151905090565b5f67ffffffffffffffff80168211156108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090611283565b60405180910390fd5b6108c1610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161093193929190611565565b5f604051808303815f87803b158015610948575f80fd5b505af115801561095a573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109bb9190610e97565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a1f929190611692565b5f60405180830381865afa158015610a39573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a619190611a7a565b9050805f015167ffffffffffffffff1691505092915050565b610a82610cd6565b5f82604051602001610a949190611ae1565b60405160208183030381529060405290505f84604051602001610ab79190611b40565b6040516020818303038152906040529050610ad0610cd6565b825182516001610ae09190611b87565b610aea9190611b87565b67ffffffffffffffff811115610b0357610b02610fa1565b5b6040519080825280601f01601f191660200182016040528015610b355781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610b5857610b57611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610c0c57838181518110610ba457610ba3611bba565b5b602001015160f81c60f81b825f0151600183610bc09190611b87565b81518110610bd157610bd0611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610b88565b505f5b8251811015610c9f57828181518110610c2b57610c2a611bba565b5b602001015160f81c60f81b825f01518551600184610c499190611b87565b610c539190611b87565b81518110610c6457610c63611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c0f565b5080935050505092915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d2b82610ce9565b610d358185610cf3565b9350610d45818560208601610d03565b610d4e81610d11565b840191505092915050565b5f6020820190508181035f830152610d718184610d21565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610db382610d8a565b9050919050565b610dc381610da9565b8114610dcd575f80fd5b50565b5f81359050610dde81610dba565b92915050565b5f819050919050565b610df681610de4565b8114610e00575f80fd5b50565b5f81359050610e1181610ded565b92915050565b5f8060408385031215610e2d57610e2c610d82565b5b5f610e3a85828601610dd0565b9250506020610e4b85828601610e03565b9150509250929050565b5f8115159050919050565b610e6981610e55565b82525050565b5f602082019050610e825f830184610e60565b92915050565b610e9181610de4565b82525050565b5f602082019050610eaa5f830184610e88565b92915050565b5f805f60608486031215610ec757610ec6610d82565b5b5f610ed486828701610dd0565b9350506020610ee586828701610dd0565b9250506040610ef686828701610e03565b9150509250925092565b5f60ff82169050919050565b610f1581610f00565b82525050565b5f602082019050610f2e5f830184610f0c565b92915050565b5f60208284031215610f4957610f48610d82565b5b5f610f5684828501610dd0565b91505092915050565b5f8060408385031215610f7557610f74610d82565b5b5f610f8285828601610dd0565b9250506020610f9385828601610dd0565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610fd782610d11565b810181811067ffffffffffffffff82111715610ff657610ff5610fa1565b5b80604052505050565b5f611008610d79565b90506110148282610fce565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561103f5761103e610fa1565b5b61104882610d11565b9050602081019050919050565b5f61106761106284611025565b610fff565b90508281526020810184848401111561108357611082611021565b5b61108e848285610d03565b509392505050565b5f82601f8301126110aa576110a961101d565b5b81516110ba848260208601611055565b91505092915050565b6110cc81610f00565b81146110d6575f80fd5b50565b5f815190506110e7816110c3565b92915050565b5f815190506110fb81610ded565b92915050565b5f6080828403121561111657611115610f9d565b5b6111206080610fff565b90505f82015167ffffffffffffffff81111561113f5761113e611019565b5b61114b84828501611096565b5f83015250602082015167ffffffffffffffff81111561116e5761116d611019565b5b61117a84828501611096565b602083015250604061118e848285016110d9565b60408301525060606111a2848285016110ed565b60608301525092915050565b5f602082840312156111c3576111c2610d82565b5b5f82015167ffffffffffffffff8111156111e0576111df610d86565b5b6111ec84828501611101565b91505092915050565b6111fe81610da9565b82525050565b5f6060820190506112175f8301866111f5565b61122460208301856111f5565b6112316040830184610e88565b949350505050565b7f616d6f756e7420697320746f6f206c61726765000000000000000000000000005f82015250565b5f61126d601383610cf3565b915061127882611239565b602082019050919050565b5f6020820190508181035f83015261129a81611261565b9050919050565b5f67ffffffffffffffff82169050919050565b6112bd816112a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611310826112ec565b61131a81856112f6565b935061132a818560208601610d03565b61133381610d11565b840191505092915050565b5f602083015f8301518482035f8601526113588282611306565b9150508091505092915050565b61136e81610de4565b82525050565b5f604083015f8301518482035f86015261138e828261133e565b91505060208301516113a36020860182611365565b508091505092915050565b5f6113b98383611374565b905092915050565b5f602082019050919050565b5f6113d7826112c3565b6113e181856112cd565b9350836020820285016113f3856112dd565b805f5b8581101561142e578484038952815161140f85826113ae565b945061141a836113c1565b925060208a019950506001810190506113f6565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61147c82611469565b9050919050565b61148c81611472565b82525050565b5f61149d8383611483565b60208301905092915050565b5f602082019050919050565b5f6114bf82611440565b6114c9818561144a565b93506114d48361145a565b805f5b838110156115045781516114eb8882611492565b97506114f6836114a9565b9250506001810190506114d7565b5085935050505092915050565b5f606083015f8301516115265f8601826112b4565b506020830151848203602086015261153e82826113cd565b9150506040830151848203604086015261155882826114b5565b9150508091505092915050565b5f6060820190506115785f8301866111f5565b61158560208301856111f5565b81810360408301526115978184611511565b9050949350505050565b6115aa81611469565b81146115b4575f80fd5b50565b5f815190506115c5816115a1565b92915050565b5f602082840312156115e0576115df610d82565b5b5f6115ed848285016115b7565b91505092915050565b5f602083015f8301518482035f8601526116108282611306565b9150508091505092915050565b5f6020820190508181035f83015261163581846115f6565b905092915050565b611646816112a1565b8114611650575f80fd5b50565b5f815190506116618161163d565b92915050565b5f6020828403121561167c5761167b610d82565b5b5f61168984828501611653565b91505092915050565b5f6040820190506116a55f8301856111f5565b6116b260208301846111f5565b9392505050565b5f67ffffffffffffffff8211156116d3576116d2610fa1565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561170257611701610fa1565b5b61170b82610d11565b9050602081019050919050565b5f61172a611725846116e8565b610fff565b90508281526020810184848401111561174657611745611021565b5b611751848285610d03565b509392505050565b5f82601f83011261176d5761176c61101d565b5b815161177d848260208601611718565b91505092915050565b5f6020828403121561179b5761179a610f9d565b5b6117a56020610fff565b90505f82015167ffffffffffffffff8111156117c4576117c3611019565b5b6117d084828501611759565b5f8301525092915050565b5f604082840312156117f0576117ef610f9d565b5b6117fa6040610fff565b90505f82015167ffffffffffffffff81111561181957611818611019565b5b61182584828501611786565b5f830152506020611838848285016110ed565b60208301525092915050565b5f611856611851846116b9565b610fff565b90508083825260208201905060208402830185811115611879576118786116e4565b5b835b818110156118c057805167ffffffffffffffff81111561189e5761189d61101d565b5b8086016118ab89826117db565b8552602085019450505060208101905061187b565b5050509392505050565b5f82601f8301126118de576118dd61101d565b5b81516118ee848260208601611844565b91505092915050565b5f67ffffffffffffffff82111561191157611910610fa1565b5b602082029050602081019050919050565b61192b81611469565b8114611935575f80fd5b50565b5f8151905061194681611922565b92915050565b5f61195e611959846118f7565b610fff565b90508083825260208201905060208402830185811115611981576119806116e4565b5b835b818110156119aa57806119968882611938565b845260208401935050602081019050611983565b5050509392505050565b5f82601f8301126119c8576119c761101d565b5b81516119d884826020860161194c565b91505092915050565b5f606082840312156119f6576119f5610f9d565b5b611a006060610fff565b90505f611a0f84828501611653565b5f83015250602082015167ffffffffffffffff811115611a3257611a31611019565b5b611a3e848285016118ca565b602083015250604082015167ffffffffffffffff811115611a6257611a61611019565b5b611a6e848285016119b4565b60408301525092915050565b5f60208284031215611a8f57611a8e610d82565b5b5f82015167ffffffffffffffff811115611aac57611aab610d86565b5b611ab8848285016119e1565b91505092915050565b5f819050919050565b611adb611ad682611472565b611ac1565b82525050565b5f611aec8284611aca565b60208201915081905092915050565b5f8160601b9050919050565b5f611b1182611afb565b9050919050565b5f611b2282611b07565b9050919050565b611b3a611b3582610da9565b611b18565b82525050565b5f611b4b8284611b29565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b9182610de4565b9150611b9c83610de4565b9250828201905080821115611bb457611bb3611b5a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122062a8b64024fec9bcec6f907bcb502f89a42ec4282db84a1ab897d4dd9ef9e72b64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime index 86dfcbba95..742afc05eb 100644 --- a/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190610f39565b60405180910390f35b6100d860048036038101906100d39190610ff7565b6102b5565b6040516100e5919061104f565b60405180910390f35b6100f66103ac565b6040516101039190611077565b60405180910390f35b61012660048036038101906101219190611090565b6103b5565b604051610133919061104f565b60405180910390f35b610144610611565b60405161015191906110fb565b60405180910390f35b610174600480360381019061016f9190611114565b610626565b6040516101819190611077565b60405180910390f35b610192610756565b60405161019f91906111b8565b60405180910390f35b6101b06107ff565b6040516101bd9190610f39565b60405180910390f35b6101e060048036038101906101db9190610ff7565b61088f565b6040516101ed919061104f565b60405180910390f35b610210600480360381019061020b91906111d8565b610a38565b60405161021d9190611077565b60405180910390f35b60605f805461023490611243565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611243565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f0610756565b866040518563ffffffff1660e01b81526004016103109493929190611282565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611077565b60405180910390a36001905092915050565b5f600454905090565b5f6103be610e5a565b600167ffffffffffffffff8111156103d9576103d86112cc565b5b60405190808252806020026020018201604052801561041257816020015b6103ff610e84565b8152602001906001900390816103f75790505b508160200181905250610423610756565b81602001515f8151811061043a576104396112f9565b5b60200260200101515f01819052508281602001515f815181106104605761045f6112f9565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104c193929190611598565b5f604051808303815f87803b1580156104d8575f80fd5b505af11580156104ea573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105a05773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057293929190611598565b5f604051808303815f87803b158015610589575f80fd5b505af115801561059b573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105fd9190611077565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a991906115fe565b90505f6106b68483610b64565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6106f0610756565b836040518363ffffffff1660e01b815260040161070e929190611650565b602060405180830381865afa158015610729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074d9190611699565b92505050919050565b61075e610ea3565b60036040518060200160405290815f8201805461077a90611243565b80601f01602080910402602001604051908101604052809291908181526020018280546107a690611243565b80156107f15780601f106107c8576101008083540402835291602001916107f1565b820191905f5260205f20905b8154815290600101906020018083116107d457829003601f168201915b505050505081525050905090565b60606001805461080e90611243565b80601f016020809104026020016040519081016040528092919081815260200182805461083a90611243565b80156108855780601f1061085c57610100808354040283529160200191610885565b820191905f5260205f20905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b5f610898610e5a565b600167ffffffffffffffff8111156108b3576108b26112cc565b5b6040519080825280602002602001820160405280156108ec57816020015b6108d9610e84565b8152602001906001900390816108d15790505b5081602001819052506108fd610756565b81602001515f81518110610914576109136112f9565b5b60200260200101515f01819052508281602001515f8151811061093a576109396112f9565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161099b93929190611598565b5f604051808303815f87803b1580156109b2575f80fd5b505af11580156109c4573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a259190611077565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a899291906116c4565b5f60405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610acb9190611b31565b90505f610ad6610756565b90505f5b826020015151811015610b5757610b1883602001518281518110610b0157610b006112f9565b5b60200260200101515f01515f0151835f0151610d96565b15610b4a5782602001518181518110610b3457610b336112f9565b5b6020026020010151602001519350505050610b5e565b8080600101915050610ada565b505f925050505b92915050565b610b6c610eb6565b5f82604051602001610b7e9190611b98565b60405160208183030381529060405290505f84604051602001610ba19190611bf7565b6040516020818303038152906040529050610bba610eb6565b825182516001610bca9190611c3e565b610bd49190611c3e565b67ffffffffffffffff811115610bed57610bec6112cc565b5b6040519080825280601f01601f191660200182016040528015610c1f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610c4257610c416112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610cf657838181518110610c8e57610c8d6112f9565b5b602001015160f81c60f81b825f0151600183610caa9190611c3e565b81518110610cbb57610cba6112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c72565b505f5b8251811015610d8957828181518110610d1557610d146112f9565b5b602001015160f81c60f81b825f01518551600184610d339190611c3e565b610d3d9190611c3e565b81518110610d4e57610d4d6112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610cf9565b5080935050505092915050565b5f8151835114610da8575f9050610e54565b5f5b8351811015610e4e57828181518110610dc657610dc56112f9565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610e0657610e056112f9565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e41575f915050610e54565b8080600101915050610daa565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610e97610ea3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f0b82610ec9565b610f158185610ed3565b9350610f25818560208601610ee3565b610f2e81610ef1565b840191505092915050565b5f6020820190508181035f830152610f518184610f01565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f9382610f6a565b9050919050565b610fa381610f89565b8114610fad575f80fd5b50565b5f81359050610fbe81610f9a565b92915050565b5f819050919050565b610fd681610fc4565b8114610fe0575f80fd5b50565b5f81359050610ff181610fcd565b92915050565b5f806040838503121561100d5761100c610f62565b5b5f61101a85828601610fb0565b925050602061102b85828601610fe3565b9150509250929050565b5f8115159050919050565b61104981611035565b82525050565b5f6020820190506110625f830184611040565b92915050565b61107181610fc4565b82525050565b5f60208201905061108a5f830184611068565b92915050565b5f805f606084860312156110a7576110a6610f62565b5b5f6110b486828701610fb0565b93505060206110c586828701610fb0565b92505060406110d686828701610fe3565b9150509250925092565b5f60ff82169050919050565b6110f5816110e0565b82525050565b5f60208201905061110e5f8301846110ec565b92915050565b5f6020828403121561112957611128610f62565b5b5f61113684828501610fb0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6111638261113f565b61116d8185611149565b935061117d818560208601610ee3565b61118681610ef1565b840191505092915050565b5f602083015f8301518482035f8601526111ab8282611159565b9150508091505092915050565b5f6020820190508181035f8301526111d08184611191565b905092915050565b5f80604083850312156111ee576111ed610f62565b5b5f6111fb85828601610fb0565b925050602061120c85828601610fb0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061125a57607f821691505b60208210810361126d5761126c611216565b5b50919050565b61127c81610f89565b82525050565b5f6080820190506112955f830187611273565b6112a26020830186611273565b81810360408301526112b48185611191565b90506112c36060830184611068565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61134281611326565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f86015261138b8282611159565b9150508091505092915050565b6113a181610fc4565b82525050565b5f604083015f8301518482035f8601526113c18282611371565b91505060208301516113d66020860182611398565b508091505092915050565b5f6113ec83836113a7565b905092915050565b5f602082019050919050565b5f61140a82611348565b6114148185611352565b93508360208202850161142685611362565b805f5b85811015611461578484038952815161144285826113e1565b945061144d836113f4565b925060208a01995050600181019050611429565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6114af8261149c565b9050919050565b6114bf816114a5565b82525050565b5f6114d083836114b6565b60208301905092915050565b5f602082019050919050565b5f6114f282611473565b6114fc818561147d565b93506115078361148d565b805f5b8381101561153757815161151e88826114c5565b9750611529836114dc565b92505060018101905061150a565b5085935050505092915050565b5f606083015f8301516115595f860182611339565b50602083015184820360208601526115718282611400565b9150506040830151848203604086015261158b82826114e8565b9150508091505092915050565b5f6060820190506115ab5f830186611273565b6115b86020830185611273565b81810360408301526115ca8184611544565b9050949350505050565b6115dd8161149c565b81146115e7575f80fd5b50565b5f815190506115f8816115d4565b92915050565b5f6020828403121561161357611612610f62565b5b5f611620848285016115ea565b91505092915050565b5f602083015f8301518482035f8601526116438282611159565b9150508091505092915050565b5f6040820190508181035f8301526116688185611191565b9050818103602083015261167c8184611629565b90509392505050565b5f8151905061169381610fcd565b92915050565b5f602082840312156116ae576116ad610f62565b5b5f6116bb84828501611685565b91505092915050565b5f6040820190506116d75f830185611273565b6116e46020830184611273565b9392505050565b5f80fd5b6116f882610ef1565b810181811067ffffffffffffffff82111715611717576117166112cc565b5b80604052505050565b5f611729610f59565b905061173582826116ef565b919050565b5f80fd5b61174781611326565b8114611751575f80fd5b50565b5f815190506117628161173e565b92915050565b5f80fd5b5f67ffffffffffffffff821115611786576117856112cc565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156117b9576117b86112cc565b5b6117c282610ef1565b9050602081019050919050565b5f6117e16117dc8461179f565b611720565b9050828152602081018484840111156117fd576117fc61179b565b5b611808848285610ee3565b509392505050565b5f82601f83011261182457611823611768565b5b81516118348482602086016117cf565b91505092915050565b5f60208284031215611852576118516116eb565b5b61185c6020611720565b90505f82015167ffffffffffffffff81111561187b5761187a61173a565b5b61188784828501611810565b5f8301525092915050565b5f604082840312156118a7576118a66116eb565b5b6118b16040611720565b90505f82015167ffffffffffffffff8111156118d0576118cf61173a565b5b6118dc8482850161183d565b5f8301525060206118ef84828501611685565b60208301525092915050565b5f61190d6119088461176c565b611720565b905080838252602082019050602084028301858111156119305761192f611797565b5b835b8181101561197757805167ffffffffffffffff81111561195557611954611768565b5b8086016119628982611892565b85526020850194505050602081019050611932565b5050509392505050565b5f82601f83011261199557611994611768565b5b81516119a58482602086016118fb565b91505092915050565b5f67ffffffffffffffff8211156119c8576119c76112cc565b5b602082029050602081019050919050565b6119e28161149c565b81146119ec575f80fd5b50565b5f815190506119fd816119d9565b92915050565b5f611a15611a10846119ae565b611720565b90508083825260208201905060208402830185811115611a3857611a37611797565b5b835b81811015611a615780611a4d88826119ef565b845260208401935050602081019050611a3a565b5050509392505050565b5f82601f830112611a7f57611a7e611768565b5b8151611a8f848260208601611a03565b91505092915050565b5f60608284031215611aad57611aac6116eb565b5b611ab76060611720565b90505f611ac684828501611754565b5f83015250602082015167ffffffffffffffff811115611ae957611ae861173a565b5b611af584828501611981565b602083015250604082015167ffffffffffffffff811115611b1957611b1861173a565b5b611b2584828501611a6b565b60408301525092915050565b5f60208284031215611b4657611b45610f62565b5b5f82015167ffffffffffffffff811115611b6357611b62610f66565b5b611b6f84828501611a98565b91505092915050565b5f819050919050565b611b92611b8d826114a5565b611b78565b82525050565b5f611ba38284611b81565b60208201915081905092915050565b5f8160601b9050919050565b5f611bc882611bb2565b9050919050565b5f611bd982611bbe565b9050919050565b611bf1611bec82610f89565b611bcf565b82525050565b5f611c028284611be0565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c4882610fc4565b9150611c5383610fc4565b9250828201905080821115611c6b57611c6a611c11565b5b9291505056fea26469706673582212206eed40963bb98bc780cc0ff1ad2e819f6f5bc0ecf2764bcdcf97bd2c85a1b87664736f6c634300081a0033 \ No newline at end of file +608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190610f39565b60405180910390f35b6100d860048036038101906100d39190610ff7565b6102b5565b6040516100e5919061104f565b60405180910390f35b6100f66103ac565b6040516101039190611077565b60405180910390f35b61012660048036038101906101219190611090565b6103b5565b604051610133919061104f565b60405180910390f35b610144610611565b60405161015191906110fb565b60405180910390f35b610174600480360381019061016f9190611114565b610626565b6040516101819190611077565b60405180910390f35b610192610756565b60405161019f91906111b8565b60405180910390f35b6101b06107ff565b6040516101bd9190610f39565b60405180910390f35b6101e060048036038101906101db9190610ff7565b61088f565b6040516101ed919061104f565b60405180910390f35b610210600480360381019061020b91906111d8565b610a38565b60405161021d9190611077565b60405180910390f35b60605f805461023490611243565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611243565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f0610756565b866040518563ffffffff1660e01b81526004016103109493929190611282565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611077565b60405180910390a36001905092915050565b5f600454905090565b5f6103be610e5a565b600167ffffffffffffffff8111156103d9576103d86112cc565b5b60405190808252806020026020018201604052801561041257816020015b6103ff610e84565b8152602001906001900390816103f75790505b508160200181905250610423610756565b81602001515f8151811061043a576104396112f9565b5b60200260200101515f01819052508281602001515f815181106104605761045f6112f9565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104c193929190611598565b5f604051808303815f87803b1580156104d8575f80fd5b505af11580156104ea573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105a05773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057293929190611598565b5f604051808303815f87803b158015610589575f80fd5b505af115801561059b573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105fd9190611077565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a991906115fe565b90505f6106b68483610b64565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6106f0610756565b836040518363ffffffff1660e01b815260040161070e929190611650565b602060405180830381865afa158015610729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074d9190611699565b92505050919050565b61075e610ea3565b60036040518060200160405290815f8201805461077a90611243565b80601f01602080910402602001604051908101604052809291908181526020018280546107a690611243565b80156107f15780601f106107c8576101008083540402835291602001916107f1565b820191905f5260205f20905b8154815290600101906020018083116107d457829003601f168201915b505050505081525050905090565b60606001805461080e90611243565b80601f016020809104026020016040519081016040528092919081815260200182805461083a90611243565b80156108855780601f1061085c57610100808354040283529160200191610885565b820191905f5260205f20905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b5f610898610e5a565b600167ffffffffffffffff8111156108b3576108b26112cc565b5b6040519080825280602002602001820160405280156108ec57816020015b6108d9610e84565b8152602001906001900390816108d15790505b5081602001819052506108fd610756565b81602001515f81518110610914576109136112f9565b5b60200260200101515f01819052508281602001515f8151811061093a576109396112f9565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161099b93929190611598565b5f604051808303815f87803b1580156109b2575f80fd5b505af11580156109c4573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a259190611077565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a899291906116c4565b5f60405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610acb9190611b31565b90505f610ad6610756565b90505f5b826020015151811015610b5757610b1883602001518281518110610b0157610b006112f9565b5b60200260200101515f01515f0151835f0151610d96565b15610b4a5782602001518181518110610b3457610b336112f9565b5b6020026020010151602001519350505050610b5e565b8080600101915050610ada565b505f925050505b92915050565b610b6c610eb6565b5f82604051602001610b7e9190611b98565b60405160208183030381529060405290505f84604051602001610ba19190611bf7565b6040516020818303038152906040529050610bba610eb6565b825182516001610bca9190611c3e565b610bd49190611c3e565b67ffffffffffffffff811115610bed57610bec6112cc565b5b6040519080825280601f01601f191660200182016040528015610c1f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610c4257610c416112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610cf657838181518110610c8e57610c8d6112f9565b5b602001015160f81c60f81b825f0151600183610caa9190611c3e565b81518110610cbb57610cba6112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c72565b505f5b8251811015610d8957828181518110610d1557610d146112f9565b5b602001015160f81c60f81b825f01518551600184610d339190611c3e565b610d3d9190611c3e565b81518110610d4e57610d4d6112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610cf9565b5080935050505092915050565b5f8151835114610da8575f9050610e54565b5f5b8351811015610e4e57828181518110610dc657610dc56112f9565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610e0657610e056112f9565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e41575f915050610e54565b8080600101915050610daa565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610e97610ea3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f0b82610ec9565b610f158185610ed3565b9350610f25818560208601610ee3565b610f2e81610ef1565b840191505092915050565b5f6020820190508181035f830152610f518184610f01565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f9382610f6a565b9050919050565b610fa381610f89565b8114610fad575f80fd5b50565b5f81359050610fbe81610f9a565b92915050565b5f819050919050565b610fd681610fc4565b8114610fe0575f80fd5b50565b5f81359050610ff181610fcd565b92915050565b5f806040838503121561100d5761100c610f62565b5b5f61101a85828601610fb0565b925050602061102b85828601610fe3565b9150509250929050565b5f8115159050919050565b61104981611035565b82525050565b5f6020820190506110625f830184611040565b92915050565b61107181610fc4565b82525050565b5f60208201905061108a5f830184611068565b92915050565b5f805f606084860312156110a7576110a6610f62565b5b5f6110b486828701610fb0565b93505060206110c586828701610fb0565b92505060406110d686828701610fe3565b9150509250925092565b5f60ff82169050919050565b6110f5816110e0565b82525050565b5f60208201905061110e5f8301846110ec565b92915050565b5f6020828403121561112957611128610f62565b5b5f61113684828501610fb0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6111638261113f565b61116d8185611149565b935061117d818560208601610ee3565b61118681610ef1565b840191505092915050565b5f602083015f8301518482035f8601526111ab8282611159565b9150508091505092915050565b5f6020820190508181035f8301526111d08184611191565b905092915050565b5f80604083850312156111ee576111ed610f62565b5b5f6111fb85828601610fb0565b925050602061120c85828601610fb0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061125a57607f821691505b60208210810361126d5761126c611216565b5b50919050565b61127c81610f89565b82525050565b5f6080820190506112955f830187611273565b6112a26020830186611273565b81810360408301526112b48185611191565b90506112c36060830184611068565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61134281611326565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f86015261138b8282611159565b9150508091505092915050565b6113a181610fc4565b82525050565b5f604083015f8301518482035f8601526113c18282611371565b91505060208301516113d66020860182611398565b508091505092915050565b5f6113ec83836113a7565b905092915050565b5f602082019050919050565b5f61140a82611348565b6114148185611352565b93508360208202850161142685611362565b805f5b85811015611461578484038952815161144285826113e1565b945061144d836113f4565b925060208a01995050600181019050611429565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6114af8261149c565b9050919050565b6114bf816114a5565b82525050565b5f6114d083836114b6565b60208301905092915050565b5f602082019050919050565b5f6114f282611473565b6114fc818561147d565b93506115078361148d565b805f5b8381101561153757815161151e88826114c5565b9750611529836114dc565b92505060018101905061150a565b5085935050505092915050565b5f606083015f8301516115595f860182611339565b50602083015184820360208601526115718282611400565b9150506040830151848203604086015261158b82826114e8565b9150508091505092915050565b5f6060820190506115ab5f830186611273565b6115b86020830185611273565b81810360408301526115ca8184611544565b9050949350505050565b6115dd8161149c565b81146115e7575f80fd5b50565b5f815190506115f8816115d4565b92915050565b5f6020828403121561161357611612610f62565b5b5f611620848285016115ea565b91505092915050565b5f602083015f8301518482035f8601526116438282611159565b9150508091505092915050565b5f6040820190508181035f8301526116688185611191565b9050818103602083015261167c8184611629565b90509392505050565b5f8151905061169381610fcd565b92915050565b5f602082840312156116ae576116ad610f62565b5b5f6116bb84828501611685565b91505092915050565b5f6040820190506116d75f830185611273565b6116e46020830184611273565b9392505050565b5f80fd5b6116f882610ef1565b810181811067ffffffffffffffff82111715611717576117166112cc565b5b80604052505050565b5f611729610f59565b905061173582826116ef565b919050565b5f80fd5b61174781611326565b8114611751575f80fd5b50565b5f815190506117628161173e565b92915050565b5f80fd5b5f67ffffffffffffffff821115611786576117856112cc565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156117b9576117b86112cc565b5b6117c282610ef1565b9050602081019050919050565b5f6117e16117dc8461179f565b611720565b9050828152602081018484840111156117fd576117fc61179b565b5b611808848285610ee3565b509392505050565b5f82601f83011261182457611823611768565b5b81516118348482602086016117cf565b91505092915050565b5f60208284031215611852576118516116eb565b5b61185c6020611720565b90505f82015167ffffffffffffffff81111561187b5761187a61173a565b5b61188784828501611810565b5f8301525092915050565b5f604082840312156118a7576118a66116eb565b5b6118b16040611720565b90505f82015167ffffffffffffffff8111156118d0576118cf61173a565b5b6118dc8482850161183d565b5f8301525060206118ef84828501611685565b60208301525092915050565b5f61190d6119088461176c565b611720565b905080838252602082019050602084028301858111156119305761192f611797565b5b835b8181101561197757805167ffffffffffffffff81111561195557611954611768565b5b8086016119628982611892565b85526020850194505050602081019050611932565b5050509392505050565b5f82601f83011261199557611994611768565b5b81516119a58482602086016118fb565b91505092915050565b5f67ffffffffffffffff8211156119c8576119c76112cc565b5b602082029050602081019050919050565b6119e28161149c565b81146119ec575f80fd5b50565b5f815190506119fd816119d9565b92915050565b5f611a15611a10846119ae565b611720565b90508083825260208201905060208402830185811115611a3857611a37611797565b5b835b81811015611a615780611a4d88826119ef565b845260208401935050602081019050611a3a565b5050509392505050565b5f82601f830112611a7f57611a7e611768565b5b8151611a8f848260208601611a03565b91505092915050565b5f60608284031215611aad57611aac6116eb565b5b611ab76060611720565b90505f611ac684828501611754565b5f83015250602082015167ffffffffffffffff811115611ae957611ae861173a565b5b611af584828501611981565b602083015250604082015167ffffffffffffffff811115611b1957611b1861173a565b5b611b2584828501611a6b565b60408301525092915050565b5f60208284031215611b4657611b45610f62565b5b5f82015167ffffffffffffffff811115611b6357611b62610f66565b5b611b6f84828501611a98565b91505092915050565b5f819050919050565b611b92611b8d826114a5565b611b78565b82525050565b5f611ba38284611b81565b60208201915081905092915050565b5f8160601b9050919050565b5f611bc882611bb2565b9050919050565b5f611bd982611bbe565b9050919050565b611bf1611bec82610f89565b611bcf565b82525050565b5f611c028284611be0565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c4882610fc4565b9150611c5383610fc4565b9250828201905080821115611c6b57611c6a611c11565b5b9291505056fea264697066735822122036c006c5d91e18d1773aba12977afdf958c414d5b61f3b2250c5972245031dc364736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime index 3769882b5c..ac5b7710df 100644 --- a/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190611059565b60405180910390f35b6100d860048036038101906100d39190611117565b6102b5565b6040516100e5919061116f565b60405180910390f35b6100f66103ac565b6040516101039190611197565b60405180910390f35b610126600480360381019061012191906111b0565b610449565b604051610133919061116f565b60405180910390f35b6101446106a5565b604051610151919061121b565b60405180910390f35b610174600480360381019061016f9190611234565b6106ba565b6040516101819190611197565b60405180910390f35b6101926107ea565b60405161019f91906112d8565b60405180910390f35b6101b061088d565b6040516101bd9190611059565b60405180910390f35b6101e060048036038101906101db9190611117565b61091d565b6040516101ed919061116f565b60405180910390f35b610210600480360381019061020b91906112f8565b610ac6565b60405161021d9190611197565b60405180910390f35b60605f805461023490611363565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611363565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f06107ea565b866040518563ffffffff1660e01b815260040161031094939291906113a2565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611197565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e64ea416103e5610bf2565b6040518263ffffffff1660e01b8152600401610401919061140a565b606060405180830381865afa15801561041c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104409190611518565b60400151905090565b5f610452610f7a565b600167ffffffffffffffff81111561046d5761046c611427565b5b6040519080825280602002602001820160405280156104a657816020015b610493610fa4565b81526020019060019003908161048b5790505b5081602001819052506104b76107ea565b81602001515f815181106104ce576104cd611543565b5b60200260200101515f01819052508281602001515f815181106104f4576104f3611543565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b8152600401610555939291906117e2565b5f604051808303815f87803b15801561056c575f80fd5b505af115801561057e573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146106345773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610606939291906117e2565b5f604051808303815f87803b15801561061d575f80fd5b505af115801561062f573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106919190611197565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610719573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073d9190611848565b90505f61074a8483610c84565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6107846107ea565b836040518363ffffffff1660e01b81526004016107a292919061189a565b602060405180830381865afa1580156107bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e191906118cf565b92505050919050565b6107f2610fc3565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663360a917061082a610bf2565b6040518263ffffffff1660e01b8152600401610846919061140a565b5f60405180830381865afa158015610860573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061088891906119f5565b905090565b60606001805461089c90611363565b80601f01602080910402602001604051908101604052809291908181526020018280546108c890611363565b80156109135780601f106108ea57610100808354040283529160200191610913565b820191905f5260205f20905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b5f610926610f7a565b600167ffffffffffffffff81111561094157610940611427565b5b60405190808252806020026020018201604052801561097a57816020015b610967610fa4565b81526020019060019003908161095f5790505b50816020018190525061098b6107ea565b81602001515f815181106109a2576109a1611543565b5b60200260200101515f01819052508281602001515f815181106109c8576109c7611543565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610a29939291906117e2565b5f604051808303815f87803b158015610a40575f80fd5b505af1158015610a52573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ab39190611197565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610b17929190611a3c565b5f60405180830381865afa158015610b31573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b599190611d5b565b90505f610b646107ea565b90505f5b826020015151811015610be557610ba683602001518281518110610b8f57610b8e611543565b5b60200260200101515f01515f0151835f0151610eb6565b15610bd85782602001518181518110610bc257610bc1611543565b5b6020026020010151602001519350505050610bec565b8080600101915050610b68565b505f925050505b92915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166308ad1993306040518263ffffffff1660e01b8152600401610c409190611da2565b602060405180830381865afa158015610c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7f9190611de5565b905090565b610c8c610fd6565b5f82604051602001610c9e9190611e30565b60405160208183030381529060405290505f84604051602001610cc19190611e8f565b6040516020818303038152906040529050610cda610fd6565b825182516001610cea9190611ed6565b610cf49190611ed6565b67ffffffffffffffff811115610d0d57610d0c611427565b5b6040519080825280601f01601f191660200182016040528015610d3f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610d6257610d61611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610e1657838181518110610dae57610dad611543565b5b602001015160f81c60f81b825f0151600183610dca9190611ed6565b81518110610ddb57610dda611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d92565b505f5b8251811015610ea957828181518110610e3557610e34611543565b5b602001015160f81c60f81b825f01518551600184610e539190611ed6565b610e5d9190611ed6565b81518110610e6e57610e6d611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e19565b5080935050505092915050565b5f8151835114610ec8575f9050610f74565b5f5b8351811015610f6e57828181518110610ee657610ee5611543565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610f2657610f25611543565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610f61575f915050610f74565b8080600101915050610eca565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610fb7610fc3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61102b82610fe9565b6110358185610ff3565b9350611045818560208601611003565b61104e81611011565b840191505092915050565b5f6020820190508181035f8301526110718184611021565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110b38261108a565b9050919050565b6110c3816110a9565b81146110cd575f80fd5b50565b5f813590506110de816110ba565b92915050565b5f819050919050565b6110f6816110e4565b8114611100575f80fd5b50565b5f81359050611111816110ed565b92915050565b5f806040838503121561112d5761112c611082565b5b5f61113a858286016110d0565b925050602061114b85828601611103565b9150509250929050565b5f8115159050919050565b61116981611155565b82525050565b5f6020820190506111825f830184611160565b92915050565b611191816110e4565b82525050565b5f6020820190506111aa5f830184611188565b92915050565b5f805f606084860312156111c7576111c6611082565b5b5f6111d4868287016110d0565b93505060206111e5868287016110d0565b92505060406111f686828701611103565b9150509250925092565b5f60ff82169050919050565b61121581611200565b82525050565b5f60208201905061122e5f83018461120c565b92915050565b5f6020828403121561124957611248611082565b5b5f611256848285016110d0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6112838261125f565b61128d8185611269565b935061129d818560208601611003565b6112a681611011565b840191505092915050565b5f602083015f8301518482035f8601526112cb8282611279565b9150508091505092915050565b5f6020820190508181035f8301526112f081846112b1565b905092915050565b5f806040838503121561130e5761130d611082565b5b5f61131b858286016110d0565b925050602061132c858286016110d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061137a57607f821691505b60208210810361138d5761138c611336565b5b50919050565b61139c816110a9565b82525050565b5f6080820190506113b55f830187611393565b6113c26020830186611393565b81810360408301526113d481856112b1565b90506113e36060830184611188565b95945050505050565b5f63ffffffff82169050919050565b611404816113ec565b82525050565b5f60208201905061141d5f8301846113fb565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61145d82611011565b810181811067ffffffffffffffff8211171561147c5761147b611427565b5b80604052505050565b5f61148e611079565b905061149a8282611454565b919050565b5f80fd5b5f815190506114b1816110ed565b92915050565b5f606082840312156114cc576114cb611423565b5b6114d66060611485565b90505f6114e5848285016114a3565b5f8301525060206114f8848285016114a3565b602083015250604061150c848285016114a3565b60408301525092915050565b5f6060828403121561152d5761152c611082565b5b5f61153a848285016114b7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61158c81611570565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526115d58282611279565b9150508091505092915050565b6115eb816110e4565b82525050565b5f604083015f8301518482035f86015261160b82826115bb565b915050602083015161162060208601826115e2565b508091505092915050565b5f61163683836115f1565b905092915050565b5f602082019050919050565b5f61165482611592565b61165e818561159c565b935083602082028501611670856115ac565b805f5b858110156116ab578484038952815161168c858261162b565b94506116978361163e565b925060208a01995050600181019050611673565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6116f9826116e6565b9050919050565b611709816116ef565b82525050565b5f61171a8383611700565b60208301905092915050565b5f602082019050919050565b5f61173c826116bd565b61174681856116c7565b9350611751836116d7565b805f5b83811015611781578151611768888261170f565b975061177383611726565b925050600181019050611754565b5085935050505092915050565b5f606083015f8301516117a35f860182611583565b50602083015184820360208601526117bb828261164a565b915050604083015184820360408601526117d58282611732565b9150508091505092915050565b5f6060820190506117f55f830186611393565b6118026020830185611393565b8181036040830152611814818461178e565b9050949350505050565b611827816116e6565b8114611831575f80fd5b50565b5f815190506118428161181e565b92915050565b5f6020828403121561185d5761185c611082565b5b5f61186a84828501611834565b91505092915050565b5f602083015f8301518482035f86015261188d8282611279565b9150508091505092915050565b5f6040820190508181035f8301526118b281856112b1565b905081810360208301526118c68184611873565b90509392505050565b5f602082840312156118e4576118e3611082565b5b5f6118f1848285016114a3565b91505092915050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561191c5761191b611427565b5b61192582611011565b9050602081019050919050565b5f61194461193f84611902565b611485565b9050828152602081018484840111156119605761195f6118fe565b5b61196b848285611003565b509392505050565b5f82601f830112611987576119866118fa565b5b8151611997848260208601611932565b91505092915050565b5f602082840312156119b5576119b4611423565b5b6119bf6020611485565b90505f82015167ffffffffffffffff8111156119de576119dd61149f565b5b6119ea84828501611973565b5f8301525092915050565b5f60208284031215611a0a57611a09611082565b5b5f82015167ffffffffffffffff811115611a2757611a26611086565b5b611a33848285016119a0565b91505092915050565b5f604082019050611a4f5f830185611393565b611a5c6020830184611393565b9392505050565b611a6c81611570565b8114611a76575f80fd5b50565b5f81519050611a8781611a63565b92915050565b5f67ffffffffffffffff821115611aa757611aa6611427565b5b602082029050602081019050919050565b5f80fd5b5f60408284031215611ad157611ad0611423565b5b611adb6040611485565b90505f82015167ffffffffffffffff811115611afa57611af961149f565b5b611b06848285016119a0565b5f830152506020611b19848285016114a3565b60208301525092915050565b5f611b37611b3284611a8d565b611485565b90508083825260208201905060208402830185811115611b5a57611b59611ab8565b5b835b81811015611ba157805167ffffffffffffffff811115611b7f57611b7e6118fa565b5b808601611b8c8982611abc565b85526020850194505050602081019050611b5c565b5050509392505050565b5f82601f830112611bbf57611bbe6118fa565b5b8151611bcf848260208601611b25565b91505092915050565b5f67ffffffffffffffff821115611bf257611bf1611427565b5b602082029050602081019050919050565b611c0c816116e6565b8114611c16575f80fd5b50565b5f81519050611c2781611c03565b92915050565b5f611c3f611c3a84611bd8565b611485565b90508083825260208201905060208402830185811115611c6257611c61611ab8565b5b835b81811015611c8b5780611c778882611c19565b845260208401935050602081019050611c64565b5050509392505050565b5f82601f830112611ca957611ca86118fa565b5b8151611cb9848260208601611c2d565b91505092915050565b5f60608284031215611cd757611cd6611423565b5b611ce16060611485565b90505f611cf084828501611a79565b5f83015250602082015167ffffffffffffffff811115611d1357611d1261149f565b5b611d1f84828501611bab565b602083015250604082015167ffffffffffffffff811115611d4357611d4261149f565b5b611d4f84828501611c95565b60408301525092915050565b5f60208284031215611d7057611d6f611082565b5b5f82015167ffffffffffffffff811115611d8d57611d8c611086565b5b611d9984828501611cc2565b91505092915050565b5f602082019050611db55f830184611393565b92915050565b611dc4816113ec565b8114611dce575f80fd5b50565b5f81519050611ddf81611dbb565b92915050565b5f60208284031215611dfa57611df9611082565b5b5f611e0784828501611dd1565b91505092915050565b5f819050919050565b611e2a611e25826116ef565b611e10565b82525050565b5f611e3b8284611e19565b60208201915081905092915050565b5f8160601b9050919050565b5f611e6082611e4a565b9050919050565b5f611e7182611e56565b9050919050565b611e89611e84826110a9565b611e67565b82525050565b5f611e9a8284611e78565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ee0826110e4565b9150611eeb836110e4565b9250828201905080821115611f0357611f02611ea9565b5b9291505056fea2646970667358221220a0a8f17c6f3185360d298a773dc6a1f1e2ae42a2d874246fd3a719f6f70e0ee564736f6c634300081a0033 \ No newline at end of file +608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190611059565b60405180910390f35b6100d860048036038101906100d39190611117565b6102b5565b6040516100e5919061116f565b60405180910390f35b6100f66103ac565b6040516101039190611197565b60405180910390f35b610126600480360381019061012191906111b0565b610449565b604051610133919061116f565b60405180910390f35b6101446106a5565b604051610151919061121b565b60405180910390f35b610174600480360381019061016f9190611234565b6106ba565b6040516101819190611197565b60405180910390f35b6101926107ea565b60405161019f91906112d8565b60405180910390f35b6101b061088d565b6040516101bd9190611059565b60405180910390f35b6101e060048036038101906101db9190611117565b61091d565b6040516101ed919061116f565b60405180910390f35b610210600480360381019061020b91906112f8565b610ac6565b60405161021d9190611197565b60405180910390f35b60605f805461023490611363565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611363565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f06107ea565b866040518563ffffffff1660e01b815260040161031094939291906113a2565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611197565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e64ea416103e5610bf2565b6040518263ffffffff1660e01b8152600401610401919061140a565b606060405180830381865afa15801561041c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104409190611518565b60400151905090565b5f610452610f7a565b600167ffffffffffffffff81111561046d5761046c611427565b5b6040519080825280602002602001820160405280156104a657816020015b610493610fa4565b81526020019060019003908161048b5790505b5081602001819052506104b76107ea565b81602001515f815181106104ce576104cd611543565b5b60200260200101515f01819052508281602001515f815181106104f4576104f3611543565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b8152600401610555939291906117e2565b5f604051808303815f87803b15801561056c575f80fd5b505af115801561057e573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146106345773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610606939291906117e2565b5f604051808303815f87803b15801561061d575f80fd5b505af115801561062f573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106919190611197565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610719573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073d9190611848565b90505f61074a8483610c84565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6107846107ea565b836040518363ffffffff1660e01b81526004016107a292919061189a565b602060405180830381865afa1580156107bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e191906118cf565b92505050919050565b6107f2610fc3565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663360a917061082a610bf2565b6040518263ffffffff1660e01b8152600401610846919061140a565b5f60405180830381865afa158015610860573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061088891906119f5565b905090565b60606001805461089c90611363565b80601f01602080910402602001604051908101604052809291908181526020018280546108c890611363565b80156109135780601f106108ea57610100808354040283529160200191610913565b820191905f5260205f20905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b5f610926610f7a565b600167ffffffffffffffff81111561094157610940611427565b5b60405190808252806020026020018201604052801561097a57816020015b610967610fa4565b81526020019060019003908161095f5790505b50816020018190525061098b6107ea565b81602001515f815181106109a2576109a1611543565b5b60200260200101515f01819052508281602001515f815181106109c8576109c7611543565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610a29939291906117e2565b5f604051808303815f87803b158015610a40575f80fd5b505af1158015610a52573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ab39190611197565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610b17929190611a3c565b5f60405180830381865afa158015610b31573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b599190611d5b565b90505f610b646107ea565b90505f5b826020015151811015610be557610ba683602001518281518110610b8f57610b8e611543565b5b60200260200101515f01515f0151835f0151610eb6565b15610bd85782602001518181518110610bc257610bc1611543565b5b6020026020010151602001519350505050610bec565b8080600101915050610b68565b505f925050505b92915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166308ad1993306040518263ffffffff1660e01b8152600401610c409190611da2565b602060405180830381865afa158015610c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7f9190611de5565b905090565b610c8c610fd6565b5f82604051602001610c9e9190611e30565b60405160208183030381529060405290505f84604051602001610cc19190611e8f565b6040516020818303038152906040529050610cda610fd6565b825182516001610cea9190611ed6565b610cf49190611ed6565b67ffffffffffffffff811115610d0d57610d0c611427565b5b6040519080825280601f01601f191660200182016040528015610d3f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610d6257610d61611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610e1657838181518110610dae57610dad611543565b5b602001015160f81c60f81b825f0151600183610dca9190611ed6565b81518110610ddb57610dda611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d92565b505f5b8251811015610ea957828181518110610e3557610e34611543565b5b602001015160f81c60f81b825f01518551600184610e539190611ed6565b610e5d9190611ed6565b81518110610e6e57610e6d611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e19565b5080935050505092915050565b5f8151835114610ec8575f9050610f74565b5f5b8351811015610f6e57828181518110610ee657610ee5611543565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610f2657610f25611543565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610f61575f915050610f74565b8080600101915050610eca565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610fb7610fc3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61102b82610fe9565b6110358185610ff3565b9350611045818560208601611003565b61104e81611011565b840191505092915050565b5f6020820190508181035f8301526110718184611021565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110b38261108a565b9050919050565b6110c3816110a9565b81146110cd575f80fd5b50565b5f813590506110de816110ba565b92915050565b5f819050919050565b6110f6816110e4565b8114611100575f80fd5b50565b5f81359050611111816110ed565b92915050565b5f806040838503121561112d5761112c611082565b5b5f61113a858286016110d0565b925050602061114b85828601611103565b9150509250929050565b5f8115159050919050565b61116981611155565b82525050565b5f6020820190506111825f830184611160565b92915050565b611191816110e4565b82525050565b5f6020820190506111aa5f830184611188565b92915050565b5f805f606084860312156111c7576111c6611082565b5b5f6111d4868287016110d0565b93505060206111e5868287016110d0565b92505060406111f686828701611103565b9150509250925092565b5f60ff82169050919050565b61121581611200565b82525050565b5f60208201905061122e5f83018461120c565b92915050565b5f6020828403121561124957611248611082565b5b5f611256848285016110d0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6112838261125f565b61128d8185611269565b935061129d818560208601611003565b6112a681611011565b840191505092915050565b5f602083015f8301518482035f8601526112cb8282611279565b9150508091505092915050565b5f6020820190508181035f8301526112f081846112b1565b905092915050565b5f806040838503121561130e5761130d611082565b5b5f61131b858286016110d0565b925050602061132c858286016110d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061137a57607f821691505b60208210810361138d5761138c611336565b5b50919050565b61139c816110a9565b82525050565b5f6080820190506113b55f830187611393565b6113c26020830186611393565b81810360408301526113d481856112b1565b90506113e36060830184611188565b95945050505050565b5f63ffffffff82169050919050565b611404816113ec565b82525050565b5f60208201905061141d5f8301846113fb565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61145d82611011565b810181811067ffffffffffffffff8211171561147c5761147b611427565b5b80604052505050565b5f61148e611079565b905061149a8282611454565b919050565b5f80fd5b5f815190506114b1816110ed565b92915050565b5f606082840312156114cc576114cb611423565b5b6114d66060611485565b90505f6114e5848285016114a3565b5f8301525060206114f8848285016114a3565b602083015250604061150c848285016114a3565b60408301525092915050565b5f6060828403121561152d5761152c611082565b5b5f61153a848285016114b7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61158c81611570565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526115d58282611279565b9150508091505092915050565b6115eb816110e4565b82525050565b5f604083015f8301518482035f86015261160b82826115bb565b915050602083015161162060208601826115e2565b508091505092915050565b5f61163683836115f1565b905092915050565b5f602082019050919050565b5f61165482611592565b61165e818561159c565b935083602082028501611670856115ac565b805f5b858110156116ab578484038952815161168c858261162b565b94506116978361163e565b925060208a01995050600181019050611673565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6116f9826116e6565b9050919050565b611709816116ef565b82525050565b5f61171a8383611700565b60208301905092915050565b5f602082019050919050565b5f61173c826116bd565b61174681856116c7565b9350611751836116d7565b805f5b83811015611781578151611768888261170f565b975061177383611726565b925050600181019050611754565b5085935050505092915050565b5f606083015f8301516117a35f860182611583565b50602083015184820360208601526117bb828261164a565b915050604083015184820360408601526117d58282611732565b9150508091505092915050565b5f6060820190506117f55f830186611393565b6118026020830185611393565b8181036040830152611814818461178e565b9050949350505050565b611827816116e6565b8114611831575f80fd5b50565b5f815190506118428161181e565b92915050565b5f6020828403121561185d5761185c611082565b5b5f61186a84828501611834565b91505092915050565b5f602083015f8301518482035f86015261188d8282611279565b9150508091505092915050565b5f6040820190508181035f8301526118b281856112b1565b905081810360208301526118c68184611873565b90509392505050565b5f602082840312156118e4576118e3611082565b5b5f6118f1848285016114a3565b91505092915050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561191c5761191b611427565b5b61192582611011565b9050602081019050919050565b5f61194461193f84611902565b611485565b9050828152602081018484840111156119605761195f6118fe565b5b61196b848285611003565b509392505050565b5f82601f830112611987576119866118fa565b5b8151611997848260208601611932565b91505092915050565b5f602082840312156119b5576119b4611423565b5b6119bf6020611485565b90505f82015167ffffffffffffffff8111156119de576119dd61149f565b5b6119ea84828501611973565b5f8301525092915050565b5f60208284031215611a0a57611a09611082565b5b5f82015167ffffffffffffffff811115611a2757611a26611086565b5b611a33848285016119a0565b91505092915050565b5f604082019050611a4f5f830185611393565b611a5c6020830184611393565b9392505050565b611a6c81611570565b8114611a76575f80fd5b50565b5f81519050611a8781611a63565b92915050565b5f67ffffffffffffffff821115611aa757611aa6611427565b5b602082029050602081019050919050565b5f80fd5b5f60408284031215611ad157611ad0611423565b5b611adb6040611485565b90505f82015167ffffffffffffffff811115611afa57611af961149f565b5b611b06848285016119a0565b5f830152506020611b19848285016114a3565b60208301525092915050565b5f611b37611b3284611a8d565b611485565b90508083825260208201905060208402830185811115611b5a57611b59611ab8565b5b835b81811015611ba157805167ffffffffffffffff811115611b7f57611b7e6118fa565b5b808601611b8c8982611abc565b85526020850194505050602081019050611b5c565b5050509392505050565b5f82601f830112611bbf57611bbe6118fa565b5b8151611bcf848260208601611b25565b91505092915050565b5f67ffffffffffffffff821115611bf257611bf1611427565b5b602082029050602081019050919050565b611c0c816116e6565b8114611c16575f80fd5b50565b5f81519050611c2781611c03565b92915050565b5f611c3f611c3a84611bd8565b611485565b90508083825260208201905060208402830185811115611c6257611c61611ab8565b5b835b81811015611c8b5780611c778882611c19565b845260208401935050602081019050611c64565b5050509392505050565b5f82601f830112611ca957611ca86118fa565b5b8151611cb9848260208601611c2d565b91505092915050565b5f60608284031215611cd757611cd6611423565b5b611ce16060611485565b90505f611cf084828501611a79565b5f83015250602082015167ffffffffffffffff811115611d1357611d1261149f565b5b611d1f84828501611bab565b602083015250604082015167ffffffffffffffff811115611d4357611d4261149f565b5b611d4f84828501611c95565b60408301525092915050565b5f60208284031215611d7057611d6f611082565b5b5f82015167ffffffffffffffff811115611d8d57611d8c611086565b5b611d9984828501611cc2565b91505092915050565b5f602082019050611db55f830184611393565b92915050565b611dc4816113ec565b8114611dce575f80fd5b50565b5f81519050611ddf81611dbb565b92915050565b5f60208284031215611dfa57611df9611082565b5b5f611e0784828501611dd1565b91505092915050565b5f819050919050565b611e2a611e25826116ef565b611e10565b82525050565b5f611e3b8284611e19565b60208201915081905092915050565b5f8160601b9050919050565b5f611e6082611e4a565b9050919050565b5f611e7182611e56565b9050919050565b611e89611e84826110a9565b611e67565b82525050565b5f611e9a8284611e78565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ee0826110e4565b9150611eeb836110e4565b9250828201905080821115611f0357611f02611ea9565b5b9291505056fea26469706673582212203c2365ce88328e230a70a7cf0e67aa2fd9b25483858f4fbbeec8bd0b7544f6ba64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime b/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime index 4d416dc068..ec932808bf 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime @@ -1 +1 @@ -6080604052600436106100dc575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb465146102a2578063b88d4fde146102ca578063c87b56dd146102e6578063e985e9c514610322576100dc565b80636352211e1461020057806370a082311461023c57806395d89b4114610278576100dc565b8063095ea7b3116100ba578063095ea7b31461018257806323b872dd1461019e5780633d26bb67146101ba57806342842e0e146101e4576100dc565b806301ffc9a7146100e057806306fdde031461011c578063081812fc14610146575b5f80fd5b3480156100eb575f80fd5b506101066004803603810190610101919061155a565b61035e565b604051610113919061159f565b60405180910390f35b348015610127575f80fd5b5061013061044c565b60405161013d9190611628565b60405180910390f35b348015610151575f80fd5b5061016c6004803603810190610167919061167b565b6104dc565b60405161017991906116e5565b60405180910390f35b61019c60048036038101906101979190611728565b61051d565b005b6101b860048036038101906101b39190611766565b610656565b005b3480156101c5575f80fd5b506101ce610678565b6040516101db91906117df565b60405180910390f35b6101fe60048036038101906101f99190611766565b610681565b005b34801561020b575f80fd5b506102266004803603810190610221919061167b565b6106a0565b60405161023391906116e5565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d91906117f8565b6107ad565b60405161026f9190611832565b60405180910390f35b348015610283575f80fd5b5061028c61084c565b6040516102999190611628565b60405180910390f35b3480156102ad575f80fd5b506102c860048036038101906102c39190611875565b610889565b005b6102e460048036038101906102df91906119df565b6109b8565b005b3480156102f1575f80fd5b5061030c6004803603810190610307919061167b565b6109dd565b6040516103199190611628565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190611a5f565b610a8b565b604051610355919061159f565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103f657506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104455750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606003805461045b90611aca565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611aca565b80156104d25780601f106104a9576101008083540402835291602001916104d2565b820191905f5260205f20905b8154815290600101906020018083116104b557829003601f168201915b5050505050905090565b5f6104e682610b19565b5f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610527826106a0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610560575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105a0575061059f8133610a8b565b5b6105a8575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6106603382610b26565b610668575f80fd5b610673838383610bba565b505050565b5f600254905090565b61069b83838360405180602001604052805f8152506109b8565b505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b726106da84610d9e565b6040518263ffffffff1660e01b81526004016106f691906117df565b5f60405180830381865afa92505050801561073357506040513d5f823e3d601f19601f820116820180604052508101906107309190611d0d565b60015b610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611d9e565b60405180910390fd5b61077f8160600151610da9565b610787575f80fd5b61079081610dde565b610798575f80fd5b6107a58160600151610dfb565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108309190611de6565b905061084461083f8483610ee9565b61111b565b915050919050565b60606040518060400160405280600c81526020017f436f6c6c656374696f6e4c310000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c0575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516109ac919061159f565b60405180910390a35050565b6109c3848484610656565b6109cf848484846111b3565b6109d7575f80fd5b50505050565b60606109e882610b19565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c4276cc9610a2285610d9e565b6040518263ffffffff1660e01b8152600401610a3e91906117df565b5f60405180830381865afa158015610a58573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a809190611eaf565b905080915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610b22816106a0565b5050565b5f80610b31836106a0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ba057508373ffffffffffffffffffffffffffffffffffffffff16610b88846104dc565b73ffffffffffffffffffffffffffffffffffffffff16145b80610bb15750610bb08185610a8b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bda826106a0565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c30575f80fd5b610c39816112a0565b610c416114b7565b600167ffffffffffffffff811115610c5c57610c5b6118bb565b5b604051908082528060200260200182016040528015610c8a5781602001602082028036833780820191505090505b508160400181905250610c9c82610d9e565b81604001515f81518110610cb357610cb2611ef6565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610d10939291906121cd565b5f604051808303815f87803b158015610d27575f80fd5b505af1158015610d39573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610dc557610dc4611ef6565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f610df46002548361135490919063ffffffff16565b9050919050565b5f80601467ffffffffffffffff811115610e1857610e176118bb565b5b6040519080825280601f01601f191660200182016040528015610e4a5781602001600182028036833780820191505090505b5090505f5b6014811015610ed357835f0151602182610e699190612236565b81518110610e7a57610e79611ef6565b5b602001015160f81c60f81b828281518110610e9857610e97611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e4f565b5080610ede906122c3565b60601c915050919050565b610ef16114e1565b5f82604051602001610f039190612349565b60405160208183030381529060405290505f84604051602001610f2691906123a8565b6040516020818303038152906040529050610f3f6114e1565b825182516001610f4f9190612236565b610f599190612236565b67ffffffffffffffff811115610f7257610f716118bb565b5b6040519080825280601f01601f191660200182016040528015610fa45781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610fc757610fc6611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b835181101561107b5783818151811061101357611012611ef6565b5b602001015160f81c60f81b825f015160018361102f9190612236565b815181106110405761103f611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610ff7565b505f5b825181101561110e5782818151811061109a57611099611ef6565b5b602001015160f81c60f81b825f015185516001846110b89190612236565b6110c29190612236565b815181106110d3576110d2611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061107e565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ccd15a14836002546040518363ffffffff1660e01b815260040161116d9291906123e9565b602060405180830381865afa158015611188573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ac919061242b565b9050919050565b5f6111bd8461147a565b6111ca5760019050611298565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b815260040161120a949392919061249e565b6020604051808303815f875af1158015611226573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124a91906124fc565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611351575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f601060ff16611367846020015161148b565b60ff1614611377575f9050611474565b602183602001515f015151146113905761138f612527565b5b5f826040516020016113a2919061256b565b60405160208183030381529060405290505f5b602081101561146d5784602001515f01516001826113d39190612236565b815181106113e4576113e3611ef6565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191682828151811061142457611423611ef6565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611460575f92505050611474565b80806001019150506113b5565b5060019150505b92915050565b5f80823b90505f8111915050919050565b5f815f01515f815181106114a2576114a1611ef6565b5b602001015160f81c60f81b60f81c9050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61153981611505565b8114611543575f80fd5b50565b5f8135905061155481611530565b92915050565b5f6020828403121561156f5761156e6114fd565b5b5f61157c84828501611546565b91505092915050565b5f8115159050919050565b61159981611585565b82525050565b5f6020820190506115b25f830184611590565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6115fa826115b8565b61160481856115c2565b93506116148185602086016115d2565b61161d816115e0565b840191505092915050565b5f6020820190508181035f83015261164081846115f0565b905092915050565b5f819050919050565b61165a81611648565b8114611664575f80fd5b50565b5f8135905061167581611651565b92915050565b5f602082840312156116905761168f6114fd565b5b5f61169d84828501611667565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116cf826116a6565b9050919050565b6116df816116c5565b82525050565b5f6020820190506116f85f8301846116d6565b92915050565b611707816116c5565b8114611711575f80fd5b50565b5f81359050611722816116fe565b92915050565b5f806040838503121561173e5761173d6114fd565b5b5f61174b85828601611714565b925050602061175c85828601611667565b9150509250929050565b5f805f6060848603121561177d5761177c6114fd565b5b5f61178a86828701611714565b935050602061179b86828701611714565b92505060406117ac86828701611667565b9150509250925092565b5f819050919050565b5f6117c9826117b6565b9050919050565b6117d9816117bf565b82525050565b5f6020820190506117f25f8301846117d0565b92915050565b5f6020828403121561180d5761180c6114fd565b5b5f61181a84828501611714565b91505092915050565b61182c81611648565b82525050565b5f6020820190506118455f830184611823565b92915050565b61185481611585565b811461185e575f80fd5b50565b5f8135905061186f8161184b565b92915050565b5f806040838503121561188b5761188a6114fd565b5b5f61189885828601611714565b92505060206118a985828601611861565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118f1826115e0565b810181811067ffffffffffffffff821117156119105761190f6118bb565b5b80604052505050565b5f6119226114f4565b905061192e82826118e8565b919050565b5f67ffffffffffffffff82111561194d5761194c6118bb565b5b611956826115e0565b9050602081019050919050565b828183375f83830152505050565b5f61198361197e84611933565b611919565b90508281526020810184848401111561199f5761199e6118b7565b5b6119aa848285611963565b509392505050565b5f82601f8301126119c6576119c56118b3565b5b81356119d6848260208601611971565b91505092915050565b5f805f80608085870312156119f7576119f66114fd565b5b5f611a0487828801611714565b9450506020611a1587828801611714565b9350506040611a2687828801611667565b925050606085013567ffffffffffffffff811115611a4757611a46611501565b5b611a53878288016119b2565b91505092959194509250565b5f8060408385031215611a7557611a746114fd565b5b5f611a8285828601611714565b9250506020611a9385828601611714565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ae157607f821691505b602082108103611af457611af3611a9d565b5b50919050565b5f80fd5b5f80fd5b611b0b816117b6565b8114611b15575f80fd5b50565b5f81519050611b2681611b02565b92915050565b5f611b3e611b3984611933565b611919565b905082815260208101848484011115611b5a57611b596118b7565b5b611b658482856115d2565b509392505050565b5f82601f830112611b8157611b806118b3565b5b8151611b91848260208601611b2c565b91505092915050565b5f60208284031215611baf57611bae611afa565b5b611bb96020611919565b90505f82015167ffffffffffffffff811115611bd857611bd7611afe565b5b611be484828501611b6d565b5f8301525092915050565b5f60208284031215611c0457611c03611afa565b5b611c0e6020611919565b90505f82015167ffffffffffffffff811115611c2d57611c2c611afe565b5b611c3984828501611b6d565b5f8301525092915050565b5f60808284031215611c5957611c58611afa565b5b611c636080611919565b90505f611c7284828501611b18565b5f83015250602082015167ffffffffffffffff811115611c9557611c94611afe565b5b611ca184828501611b9a565b602083015250604082015167ffffffffffffffff811115611cc557611cc4611afe565b5b611cd184828501611b6d565b604083015250606082015167ffffffffffffffff811115611cf557611cf4611afe565b5b611d0184828501611bef565b60608301525092915050565b5f60208284031215611d2257611d216114fd565b5b5f82015167ffffffffffffffff811115611d3f57611d3e611501565b5b611d4b84828501611c44565b91505092915050565b7f4552433732314e6f6e6578697374656e74546f6b656e000000000000000000005f82015250565b5f611d886016836115c2565b9150611d9382611d54565b602082019050919050565b5f6020820190508181035f830152611db581611d7c565b9050919050565b611dc5816117b6565b8114611dcf575f80fd5b50565b5f81519050611de081611dbc565b92915050565b5f60208284031215611dfb57611dfa6114fd565b5b5f611e0884828501611dd2565b91505092915050565b5f67ffffffffffffffff821115611e2b57611e2a6118bb565b5b611e34826115e0565b9050602081019050919050565b5f611e53611e4e84611e11565b611919565b905082815260208101848484011115611e6f57611e6e6118b7565b5b611e7a8482856115d2565b509392505050565b5f82601f830112611e9657611e956118b3565b5b8151611ea6848260208601611e41565b91505092915050565b5f60208284031215611ec457611ec36114fd565b5b5f82015167ffffffffffffffff811115611ee157611ee0611501565b5b611eed84828501611e82565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611f3f81611f23565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611f9282611f6e565b611f9c8185611f78565b9350611fac8185602086016115d2565b611fb5816115e0565b840191505092915050565b5f602083015f8301518482035f860152611fda8282611f88565b9150508091505092915050565b611ff081611648565b82525050565b5f604083015f8301518482035f8601526120108282611fc0565b91505060208301516120256020860182611fe7565b508091505092915050565b5f61203b8383611ff6565b905092915050565b5f602082019050919050565b5f61205982611f45565b6120638185611f4f565b93508360208202850161207585611f5f565b805f5b858110156120b057848403895281516120918582612030565b945061209c83612043565b925060208a01995050600181019050612078565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6120f4816117bf565b82525050565b5f61210583836120eb565b60208301905092915050565b5f602082019050919050565b5f612127826120c2565b61213181856120cc565b935061213c836120dc565b805f5b8381101561216c57815161215388826120fa565b975061215e83612111565b92505060018101905061213f565b5085935050505092915050565b5f606083015f83015161218e5f860182611f36565b50602083015184820360208601526121a6828261204f565b915050604083015184820360408601526121c0828261211d565b9150508091505092915050565b5f6060820190506121e05f8301866116d6565b6121ed60208301856116d6565b81810360408301526121ff8184612179565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61224082611648565b915061224b83611648565b925082820190508082111561226357612262612209565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6122ae8251612278565b80915050919050565b5f82821b905092915050565b5f6122cd82611f6e565b826122d784612269565b90506122e2816122a3565b925060148210156123225761231d7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000836014036008026122b7565b831692505b5050919050565b5f819050919050565b61234361233e826117bf565b612329565b82525050565b5f6123548284612332565b60208201915081905092915050565b5f8160601b9050919050565b5f61237982612363565b9050919050565b5f61238a8261236f565b9050919050565b6123a261239d826116c5565b612380565b82525050565b5f6123b38284612391565b60148201915081905092915050565b5f602083015f8301518482035f8601526123dc8282611f88565b9150508091505092915050565b5f6040820190508181035f83015261240181856123c2565b905061241060208301846117d0565b9392505050565b5f8151905061242581611651565b92915050565b5f602082840312156124405761243f6114fd565b5b5f61244d84828501612417565b91505092915050565b5f82825260208201905092915050565b5f61247082611f6e565b61247a8185612456565b935061248a8185602086016115d2565b612493816115e0565b840191505092915050565b5f6080820190506124b15f8301876116d6565b6124be60208301866116d6565b6124cb6040830185611823565b81810360608301526124dd8184612466565b905095945050505050565b5f815190506124f681611530565b92915050565b5f60208284031215612511576125106114fd565b5b5f61251e848285016124e8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b612565612560826117bf565b612329565b82525050565b5f6125768284612554565b6020820191508190509291505056fea2646970667358221220e3d7ed077ed7365a9384f59f26974701ae0e43a894612c5f8de4eb690f03d14664736f6c634300081a0033 \ No newline at end of file +6080604052600436106100dc575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb465146102a2578063b88d4fde146102ca578063c87b56dd146102e6578063e985e9c514610322576100dc565b80636352211e1461020057806370a082311461023c57806395d89b4114610278576100dc565b8063095ea7b3116100ba578063095ea7b31461018257806323b872dd1461019e5780633d26bb67146101ba57806342842e0e146101e4576100dc565b806301ffc9a7146100e057806306fdde031461011c578063081812fc14610146575b5f80fd5b3480156100eb575f80fd5b506101066004803603810190610101919061155a565b61035e565b604051610113919061159f565b60405180910390f35b348015610127575f80fd5b5061013061044c565b60405161013d9190611628565b60405180910390f35b348015610151575f80fd5b5061016c6004803603810190610167919061167b565b6104dc565b60405161017991906116e5565b60405180910390f35b61019c60048036038101906101979190611728565b61051d565b005b6101b860048036038101906101b39190611766565b610656565b005b3480156101c5575f80fd5b506101ce610678565b6040516101db91906117df565b60405180910390f35b6101fe60048036038101906101f99190611766565b610681565b005b34801561020b575f80fd5b506102266004803603810190610221919061167b565b6106a0565b60405161023391906116e5565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d91906117f8565b6107ad565b60405161026f9190611832565b60405180910390f35b348015610283575f80fd5b5061028c61084c565b6040516102999190611628565b60405180910390f35b3480156102ad575f80fd5b506102c860048036038101906102c39190611875565b610889565b005b6102e460048036038101906102df91906119df565b6109b8565b005b3480156102f1575f80fd5b5061030c6004803603810190610307919061167b565b6109dd565b6040516103199190611628565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190611a5f565b610a8b565b604051610355919061159f565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103f657506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104455750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606003805461045b90611aca565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611aca565b80156104d25780601f106104a9576101008083540402835291602001916104d2565b820191905f5260205f20905b8154815290600101906020018083116104b557829003601f168201915b5050505050905090565b5f6104e682610b19565b5f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610527826106a0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610560575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105a0575061059f8133610a8b565b5b6105a8575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6106603382610b26565b610668575f80fd5b610673838383610bba565b505050565b5f600254905090565b61069b83838360405180602001604052805f8152506109b8565b505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b726106da84610d9e565b6040518263ffffffff1660e01b81526004016106f691906117df565b5f60405180830381865afa92505050801561073357506040513d5f823e3d601f19601f820116820180604052508101906107309190611d0d565b60015b610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611d9e565b60405180910390fd5b61077f8160600151610da9565b610787575f80fd5b61079081610dde565b610798575f80fd5b6107a58160600151610dfb565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108309190611de6565b905061084461083f8483610ee9565b61111b565b915050919050565b60606040518060400160405280600c81526020017f436f6c6c656374696f6e4c310000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c0575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516109ac919061159f565b60405180910390a35050565b6109c3848484610656565b6109cf848484846111b3565b6109d7575f80fd5b50505050565b60606109e882610b19565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c4276cc9610a2285610d9e565b6040518263ffffffff1660e01b8152600401610a3e91906117df565b5f60405180830381865afa158015610a58573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a809190611eaf565b905080915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610b22816106a0565b5050565b5f80610b31836106a0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ba057508373ffffffffffffffffffffffffffffffffffffffff16610b88846104dc565b73ffffffffffffffffffffffffffffffffffffffff16145b80610bb15750610bb08185610a8b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bda826106a0565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c30575f80fd5b610c39816112a0565b610c416114b7565b600167ffffffffffffffff811115610c5c57610c5b6118bb565b5b604051908082528060200260200182016040528015610c8a5781602001602082028036833780820191505090505b508160400181905250610c9c82610d9e565b81604001515f81518110610cb357610cb2611ef6565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610d10939291906121cd565b5f604051808303815f87803b158015610d27575f80fd5b505af1158015610d39573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610dc557610dc4611ef6565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f610df46002548361135490919063ffffffff16565b9050919050565b5f80601467ffffffffffffffff811115610e1857610e176118bb565b5b6040519080825280601f01601f191660200182016040528015610e4a5781602001600182028036833780820191505090505b5090505f5b6014811015610ed357835f0151602182610e699190612236565b81518110610e7a57610e79611ef6565b5b602001015160f81c60f81b828281518110610e9857610e97611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e4f565b5080610ede906122c3565b60601c915050919050565b610ef16114e1565b5f82604051602001610f039190612349565b60405160208183030381529060405290505f84604051602001610f2691906123a8565b6040516020818303038152906040529050610f3f6114e1565b825182516001610f4f9190612236565b610f599190612236565b67ffffffffffffffff811115610f7257610f716118bb565b5b6040519080825280601f01601f191660200182016040528015610fa45781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610fc757610fc6611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b835181101561107b5783818151811061101357611012611ef6565b5b602001015160f81c60f81b825f015160018361102f9190612236565b815181106110405761103f611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610ff7565b505f5b825181101561110e5782818151811061109a57611099611ef6565b5b602001015160f81c60f81b825f015185516001846110b89190612236565b6110c29190612236565b815181106110d3576110d2611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061107e565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ccd15a14836002546040518363ffffffff1660e01b815260040161116d9291906123e9565b602060405180830381865afa158015611188573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ac919061242b565b9050919050565b5f6111bd8461147a565b6111ca5760019050611298565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b815260040161120a949392919061249e565b6020604051808303815f875af1158015611226573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124a91906124fc565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611351575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f601060ff16611367846020015161148b565b60ff1614611377575f9050611474565b602183602001515f015151146113905761138f612527565b5b5f826040516020016113a2919061256b565b60405160208183030381529060405290505f5b602081101561146d5784602001515f01516001826113d39190612236565b815181106113e4576113e3611ef6565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191682828151811061142457611423611ef6565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611460575f92505050611474565b80806001019150506113b5565b5060019150505b92915050565b5f80823b90505f8111915050919050565b5f815f01515f815181106114a2576114a1611ef6565b5b602001015160f81c60f81b60f81c9050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61153981611505565b8114611543575f80fd5b50565b5f8135905061155481611530565b92915050565b5f6020828403121561156f5761156e6114fd565b5b5f61157c84828501611546565b91505092915050565b5f8115159050919050565b61159981611585565b82525050565b5f6020820190506115b25f830184611590565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6115fa826115b8565b61160481856115c2565b93506116148185602086016115d2565b61161d816115e0565b840191505092915050565b5f6020820190508181035f83015261164081846115f0565b905092915050565b5f819050919050565b61165a81611648565b8114611664575f80fd5b50565b5f8135905061167581611651565b92915050565b5f602082840312156116905761168f6114fd565b5b5f61169d84828501611667565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116cf826116a6565b9050919050565b6116df816116c5565b82525050565b5f6020820190506116f85f8301846116d6565b92915050565b611707816116c5565b8114611711575f80fd5b50565b5f81359050611722816116fe565b92915050565b5f806040838503121561173e5761173d6114fd565b5b5f61174b85828601611714565b925050602061175c85828601611667565b9150509250929050565b5f805f6060848603121561177d5761177c6114fd565b5b5f61178a86828701611714565b935050602061179b86828701611714565b92505060406117ac86828701611667565b9150509250925092565b5f819050919050565b5f6117c9826117b6565b9050919050565b6117d9816117bf565b82525050565b5f6020820190506117f25f8301846117d0565b92915050565b5f6020828403121561180d5761180c6114fd565b5b5f61181a84828501611714565b91505092915050565b61182c81611648565b82525050565b5f6020820190506118455f830184611823565b92915050565b61185481611585565b811461185e575f80fd5b50565b5f8135905061186f8161184b565b92915050565b5f806040838503121561188b5761188a6114fd565b5b5f61189885828601611714565b92505060206118a985828601611861565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118f1826115e0565b810181811067ffffffffffffffff821117156119105761190f6118bb565b5b80604052505050565b5f6119226114f4565b905061192e82826118e8565b919050565b5f67ffffffffffffffff82111561194d5761194c6118bb565b5b611956826115e0565b9050602081019050919050565b828183375f83830152505050565b5f61198361197e84611933565b611919565b90508281526020810184848401111561199f5761199e6118b7565b5b6119aa848285611963565b509392505050565b5f82601f8301126119c6576119c56118b3565b5b81356119d6848260208601611971565b91505092915050565b5f805f80608085870312156119f7576119f66114fd565b5b5f611a0487828801611714565b9450506020611a1587828801611714565b9350506040611a2687828801611667565b925050606085013567ffffffffffffffff811115611a4757611a46611501565b5b611a53878288016119b2565b91505092959194509250565b5f8060408385031215611a7557611a746114fd565b5b5f611a8285828601611714565b9250506020611a9385828601611714565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ae157607f821691505b602082108103611af457611af3611a9d565b5b50919050565b5f80fd5b5f80fd5b611b0b816117b6565b8114611b15575f80fd5b50565b5f81519050611b2681611b02565b92915050565b5f611b3e611b3984611933565b611919565b905082815260208101848484011115611b5a57611b596118b7565b5b611b658482856115d2565b509392505050565b5f82601f830112611b8157611b806118b3565b5b8151611b91848260208601611b2c565b91505092915050565b5f60208284031215611baf57611bae611afa565b5b611bb96020611919565b90505f82015167ffffffffffffffff811115611bd857611bd7611afe565b5b611be484828501611b6d565b5f8301525092915050565b5f60208284031215611c0457611c03611afa565b5b611c0e6020611919565b90505f82015167ffffffffffffffff811115611c2d57611c2c611afe565b5b611c3984828501611b6d565b5f8301525092915050565b5f60808284031215611c5957611c58611afa565b5b611c636080611919565b90505f611c7284828501611b18565b5f83015250602082015167ffffffffffffffff811115611c9557611c94611afe565b5b611ca184828501611b9a565b602083015250604082015167ffffffffffffffff811115611cc557611cc4611afe565b5b611cd184828501611b6d565b604083015250606082015167ffffffffffffffff811115611cf557611cf4611afe565b5b611d0184828501611bef565b60608301525092915050565b5f60208284031215611d2257611d216114fd565b5b5f82015167ffffffffffffffff811115611d3f57611d3e611501565b5b611d4b84828501611c44565b91505092915050565b7f4552433732314e6f6e6578697374656e74546f6b656e000000000000000000005f82015250565b5f611d886016836115c2565b9150611d9382611d54565b602082019050919050565b5f6020820190508181035f830152611db581611d7c565b9050919050565b611dc5816117b6565b8114611dcf575f80fd5b50565b5f81519050611de081611dbc565b92915050565b5f60208284031215611dfb57611dfa6114fd565b5b5f611e0884828501611dd2565b91505092915050565b5f67ffffffffffffffff821115611e2b57611e2a6118bb565b5b611e34826115e0565b9050602081019050919050565b5f611e53611e4e84611e11565b611919565b905082815260208101848484011115611e6f57611e6e6118b7565b5b611e7a8482856115d2565b509392505050565b5f82601f830112611e9657611e956118b3565b5b8151611ea6848260208601611e41565b91505092915050565b5f60208284031215611ec457611ec36114fd565b5b5f82015167ffffffffffffffff811115611ee157611ee0611501565b5b611eed84828501611e82565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611f3f81611f23565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611f9282611f6e565b611f9c8185611f78565b9350611fac8185602086016115d2565b611fb5816115e0565b840191505092915050565b5f602083015f8301518482035f860152611fda8282611f88565b9150508091505092915050565b611ff081611648565b82525050565b5f604083015f8301518482035f8601526120108282611fc0565b91505060208301516120256020860182611fe7565b508091505092915050565b5f61203b8383611ff6565b905092915050565b5f602082019050919050565b5f61205982611f45565b6120638185611f4f565b93508360208202850161207585611f5f565b805f5b858110156120b057848403895281516120918582612030565b945061209c83612043565b925060208a01995050600181019050612078565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6120f4816117bf565b82525050565b5f61210583836120eb565b60208301905092915050565b5f602082019050919050565b5f612127826120c2565b61213181856120cc565b935061213c836120dc565b805f5b8381101561216c57815161215388826120fa565b975061215e83612111565b92505060018101905061213f565b5085935050505092915050565b5f606083015f83015161218e5f860182611f36565b50602083015184820360208601526121a6828261204f565b915050604083015184820360408601526121c0828261211d565b9150508091505092915050565b5f6060820190506121e05f8301866116d6565b6121ed60208301856116d6565b81810360408301526121ff8184612179565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61224082611648565b915061224b83611648565b925082820190508082111561226357612262612209565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6122ae8251612278565b80915050919050565b5f82821b905092915050565b5f6122cd82611f6e565b826122d784612269565b90506122e2816122a3565b925060148210156123225761231d7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000836014036008026122b7565b831692505b5050919050565b5f819050919050565b61234361233e826117bf565b612329565b82525050565b5f6123548284612332565b60208201915081905092915050565b5f8160601b9050919050565b5f61237982612363565b9050919050565b5f61238a8261236f565b9050919050565b6123a261239d826116c5565b612380565b82525050565b5f6123b38284612391565b60148201915081905092915050565b5f602083015f8301518482035f8601526123dc8282611f88565b9150508091505092915050565b5f6040820190508181035f83015261240181856123c2565b905061241060208301846117d0565b9392505050565b5f8151905061242581611651565b92915050565b5f602082840312156124405761243f6114fd565b5b5f61244d84828501612417565b91505092915050565b5f82825260208201905092915050565b5f61247082611f6e565b61247a8185612456565b935061248a8185602086016115d2565b612493816115e0565b840191505092915050565b5f6080820190506124b15f8301876116d6565b6124be60208301866116d6565b6124cb6040830185611823565b81810360608301526124dd8184612466565b905095945050505050565b5f815190506124f681611530565b92915050565b5f60208284031215612511576125106114fd565b5b5f61251e848285016124e8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b612565612560826117bf565b612329565b82525050565b5f6125768284612554565b6020820191508190509291505056fea26469706673582212202761f8e3bedaba8888f4349b7573db307ea7bed934b99b5e82dd0c62e366ea8f64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime b/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime index d8ab7a4d61..85a2081308 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime @@ -1 +1 @@ -6080604052600436106100c1575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb4651461025d578063b88d4fde14610285578063c87b56dd146102a1578063e985e9c5146102dd576100c1565b80636352211e146101bb57806370a08231146101f757806395d89b4114610233576100c1565b806301ffc9a7146100c557806306fdde0314610101578063081812fc1461012b578063095ea7b31461016757806323b872dd1461018357806342842e0e1461019f575b5f80fd5b3480156100d0575f80fd5b506100eb60048036038101906100e69190611350565b610319565b6040516100f89190611395565b60405180910390f35b34801561010c575f80fd5b50610115610407565b604051610122919061141e565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611471565b610444565b60405161015e91906114db565b60405180910390f35b610181600480360381019061017c919061151e565b610485565b005b61019d6004803603810190610198919061155c565b6105be565b005b6101b960048036038101906101b4919061155c565b6105e0565b005b3480156101c6575f80fd5b506101e160048036038101906101dc9190611471565b6105ff565b6040516101ee91906114db565b60405180910390f35b348015610202575f80fd5b5061021d600480360381019061021891906115ac565b61070c565b60405161022a91906115e6565b60405180910390f35b34801561023e575f80fd5b506102476107ab565b604051610254919061141e565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190611629565b6107e8565b005b61029f600480360381019061029a9190611793565b610917565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190611471565b61093c565b6040516102d4919061141e565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190611813565b6109ea565b6040516103109190611395565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b157506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104005750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600781526020017f4c31204e46547300000000000000000000000000000000000000000000000000815250905090565b5f61044e82610a78565b5f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61048f826105ff565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104c8575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610508575061050781336109ea565b5b610510575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6105c83382610a85565b6105d0575f80fd5b6105db838383610b19565b505050565b6105fa83838360405180602001604052805f815250610917565b505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b7261063984610cfd565b6040518263ffffffff1660e01b8152600401610655919061187a565b5f60405180830381865afa92505050801561069257506040513d5f823e3d601f19601f8201168201806040525081019061068f9190611aa6565b60015b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890611b37565b60405180910390fd5b6106de8160600151610d08565b6106e6575f80fd5b6106ef81610d3d565b6106f7575f80fd5b6107048160600151610d47565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078f9190611b7f565b90506107a361079e8483610e35565b611067565b915050919050565b60606040518060400160405280600c81526020017f436f6c6c656374696f6e4c310000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361081f575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161090b9190611395565b60405180910390a35050565b6109228484846105be565b61092e848484846110fb565b610936575f80fd5b50505050565b606061094782610a78565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c4276cc961098185610cfd565b6040518263ffffffff1660e01b815260040161099d919061187a565b5f60405180830381865afa1580156109b7573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906109df9190611c48565b905080915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610a81816105ff565b5050565b5f80610a90836105ff565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610aff57508373ffffffffffffffffffffffffffffffffffffffff16610ae784610444565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b105750610b0f81856109ea565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610b39826105ff565b73ffffffffffffffffffffffffffffffffffffffff1614610b58575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b8f575f80fd5b610b98816111e8565b610ba06112ad565b600167ffffffffffffffff811115610bbb57610bba61166f565b5b604051908082528060200260200182016040528015610be95781602001602082028036833780820191505090505b508160400181905250610bfb82610cfd565b81604001515f81518110610c1257610c11611c8f565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610c6f93929190611f66565b5f604051808303815f87803b158015610c86575f80fd5b505af1158015610c98573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610d2457610d23611c8f565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f60019050919050565b5f80601467ffffffffffffffff811115610d6457610d6361166f565b5b6040519080825280601f01601f191660200182016040528015610d965781602001600182028036833780820191505090505b5090505f5b6014811015610e1f57835f0151602182610db59190611fcf565b81518110610dc657610dc5611c8f565b5b602001015160f81c60f81b828281518110610de457610de3611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d9b565b5080610e2a9061205c565b60601c915050919050565b610e3d6112d7565b5f82604051602001610e4f91906120e2565b60405160208183030381529060405290505f84604051602001610e729190612141565b6040516020818303038152906040529050610e8b6112d7565b825182516001610e9b9190611fcf565b610ea59190611fcf565b67ffffffffffffffff811115610ebe57610ebd61166f565b5b6040519080825280601f01601f191660200182016040528015610ef05781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610f1357610f12611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610fc757838181518110610f5f57610f5e611c8f565b5b602001015160f81c60f81b825f0151600183610f7b9190611fcf565b81518110610f8c57610f8b611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610f43565b505f5b825181101561105a57828181518110610fe657610fe5611c8f565b5b602001015160f81c60f81b825f015185516001846110049190611fcf565b61100e9190611fcf565b8151811061101f5761101e611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610fca565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b81526004016110b59190612182565b602060405180830381865afa1580156110d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f491906121b6565b9050919050565b5f6111058461129c565b61111257600190506111e0565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016111529493929190612229565b6020604051808303815f875af115801561116e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111929190612287565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611299575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f80823b90505f8111915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61132f816112fb565b8114611339575f80fd5b50565b5f8135905061134a81611326565b92915050565b5f60208284031215611365576113646112f3565b5b5f6113728482850161133c565b91505092915050565b5f8115159050919050565b61138f8161137b565b82525050565b5f6020820190506113a85f830184611386565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6113f0826113ae565b6113fa81856113b8565b935061140a8185602086016113c8565b611413816113d6565b840191505092915050565b5f6020820190508181035f83015261143681846113e6565b905092915050565b5f819050919050565b6114508161143e565b811461145a575f80fd5b50565b5f8135905061146b81611447565b92915050565b5f60208284031215611486576114856112f3565b5b5f6114938482850161145d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114c58261149c565b9050919050565b6114d5816114bb565b82525050565b5f6020820190506114ee5f8301846114cc565b92915050565b6114fd816114bb565b8114611507575f80fd5b50565b5f81359050611518816114f4565b92915050565b5f8060408385031215611534576115336112f3565b5b5f6115418582860161150a565b92505060206115528582860161145d565b9150509250929050565b5f805f60608486031215611573576115726112f3565b5b5f6115808682870161150a565b93505060206115918682870161150a565b92505060406115a28682870161145d565b9150509250925092565b5f602082840312156115c1576115c06112f3565b5b5f6115ce8482850161150a565b91505092915050565b6115e08161143e565b82525050565b5f6020820190506115f95f8301846115d7565b92915050565b6116088161137b565b8114611612575f80fd5b50565b5f81359050611623816115ff565b92915050565b5f806040838503121561163f5761163e6112f3565b5b5f61164c8582860161150a565b925050602061165d85828601611615565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116a5826113d6565b810181811067ffffffffffffffff821117156116c4576116c361166f565b5b80604052505050565b5f6116d66112ea565b90506116e2828261169c565b919050565b5f67ffffffffffffffff8211156117015761170061166f565b5b61170a826113d6565b9050602081019050919050565b828183375f83830152505050565b5f611737611732846116e7565b6116cd565b9050828152602081018484840111156117535761175261166b565b5b61175e848285611717565b509392505050565b5f82601f83011261177a57611779611667565b5b813561178a848260208601611725565b91505092915050565b5f805f80608085870312156117ab576117aa6112f3565b5b5f6117b88782880161150a565b94505060206117c98782880161150a565b93505060406117da8782880161145d565b925050606085013567ffffffffffffffff8111156117fb576117fa6112f7565b5b61180787828801611766565b91505092959194509250565b5f8060408385031215611829576118286112f3565b5b5f6118368582860161150a565b92505060206118478582860161150a565b9150509250929050565b5f819050919050565b5f61186482611851565b9050919050565b6118748161185a565b82525050565b5f60208201905061188d5f83018461186b565b92915050565b5f80fd5b5f80fd5b6118a481611851565b81146118ae575f80fd5b50565b5f815190506118bf8161189b565b92915050565b5f6118d76118d2846116e7565b6116cd565b9050828152602081018484840111156118f3576118f261166b565b5b6118fe8482856113c8565b509392505050565b5f82601f83011261191a57611919611667565b5b815161192a8482602086016118c5565b91505092915050565b5f6020828403121561194857611947611893565b5b61195260206116cd565b90505f82015167ffffffffffffffff81111561197157611970611897565b5b61197d84828501611906565b5f8301525092915050565b5f6020828403121561199d5761199c611893565b5b6119a760206116cd565b90505f82015167ffffffffffffffff8111156119c6576119c5611897565b5b6119d284828501611906565b5f8301525092915050565b5f608082840312156119f2576119f1611893565b5b6119fc60806116cd565b90505f611a0b848285016118b1565b5f83015250602082015167ffffffffffffffff811115611a2e57611a2d611897565b5b611a3a84828501611933565b602083015250604082015167ffffffffffffffff811115611a5e57611a5d611897565b5b611a6a84828501611906565b604083015250606082015167ffffffffffffffff811115611a8e57611a8d611897565b5b611a9a84828501611988565b60608301525092915050565b5f60208284031215611abb57611aba6112f3565b5b5f82015167ffffffffffffffff811115611ad857611ad76112f7565b5b611ae4848285016119dd565b91505092915050565b7f4552433732314e6f6e6578697374656e74546f6b656e000000000000000000005f82015250565b5f611b216016836113b8565b9150611b2c82611aed565b602082019050919050565b5f6020820190508181035f830152611b4e81611b15565b9050919050565b611b5e81611851565b8114611b68575f80fd5b50565b5f81519050611b7981611b55565b92915050565b5f60208284031215611b9457611b936112f3565b5b5f611ba184828501611b6b565b91505092915050565b5f67ffffffffffffffff821115611bc457611bc361166f565b5b611bcd826113d6565b9050602081019050919050565b5f611bec611be784611baa565b6116cd565b905082815260208101848484011115611c0857611c0761166b565b5b611c138482856113c8565b509392505050565b5f82601f830112611c2f57611c2e611667565b5b8151611c3f848260208601611bda565b91505092915050565b5f60208284031215611c5d57611c5c6112f3565b5b5f82015167ffffffffffffffff811115611c7a57611c796112f7565b5b611c8684828501611c1b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611cd881611cbc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611d2b82611d07565b611d358185611d11565b9350611d458185602086016113c8565b611d4e816113d6565b840191505092915050565b5f602083015f8301518482035f860152611d738282611d21565b9150508091505092915050565b611d898161143e565b82525050565b5f604083015f8301518482035f860152611da98282611d59565b9150506020830151611dbe6020860182611d80565b508091505092915050565b5f611dd48383611d8f565b905092915050565b5f602082019050919050565b5f611df282611cde565b611dfc8185611ce8565b935083602082028501611e0e85611cf8565b805f5b85811015611e495784840389528151611e2a8582611dc9565b9450611e3583611ddc565b925060208a01995050600181019050611e11565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611e8d8161185a565b82525050565b5f611e9e8383611e84565b60208301905092915050565b5f602082019050919050565b5f611ec082611e5b565b611eca8185611e65565b9350611ed583611e75565b805f5b83811015611f05578151611eec8882611e93565b9750611ef783611eaa565b925050600181019050611ed8565b5085935050505092915050565b5f606083015f830151611f275f860182611ccf565b5060208301518482036020860152611f3f8282611de8565b91505060408301518482036040860152611f598282611eb6565b9150508091505092915050565b5f606082019050611f795f8301866114cc565b611f8660208301856114cc565b8181036040830152611f988184611f12565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fd98261143e565b9150611fe48361143e565b9250828201905080821115611ffc57611ffb611fa2565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6120478251612011565b80915050919050565b5f82821b905092915050565b5f61206682611d07565b8261207084612002565b905061207b8161203c565b925060148210156120bb576120b67fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802612050565b831692505b5050919050565b5f819050919050565b6120dc6120d78261185a565b6120c2565b82525050565b5f6120ed82846120cb565b60208201915081905092915050565b5f8160601b9050919050565b5f612112826120fc565b9050919050565b5f61212382612108565b9050919050565b61213b612136826114bb565b612119565b82525050565b5f61214c828461212a565b60148201915081905092915050565b5f602083015f8301518482035f8601526121758282611d21565b9150508091505092915050565b5f6020820190508181035f83015261219a818461215b565b905092915050565b5f815190506121b081611447565b92915050565b5f602082840312156121cb576121ca6112f3565b5b5f6121d8848285016121a2565b91505092915050565b5f82825260208201905092915050565b5f6121fb82611d07565b61220581856121e1565b93506122158185602086016113c8565b61221e816113d6565b840191505092915050565b5f60808201905061223c5f8301876114cc565b61224960208301866114cc565b61225660408301856115d7565b818103606083015261226881846121f1565b905095945050505050565b5f8151905061228181611326565b92915050565b5f6020828403121561229c5761229b6112f3565b5b5f6122a984828501612273565b9150509291505056fea26469706673582212204faaf378d4725cf146b9674542d559f87fbd2cf86730824e9bde2a7ab29d927564736f6c634300081a0033 \ No newline at end of file +6080604052600436106100c1575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb4651461025d578063b88d4fde14610285578063c87b56dd146102a1578063e985e9c5146102dd576100c1565b80636352211e146101bb57806370a08231146101f757806395d89b4114610233576100c1565b806301ffc9a7146100c557806306fdde0314610101578063081812fc1461012b578063095ea7b31461016757806323b872dd1461018357806342842e0e1461019f575b5f80fd5b3480156100d0575f80fd5b506100eb60048036038101906100e69190611350565b610319565b6040516100f89190611395565b60405180910390f35b34801561010c575f80fd5b50610115610407565b604051610122919061141e565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611471565b610444565b60405161015e91906114db565b60405180910390f35b610181600480360381019061017c919061151e565b610485565b005b61019d6004803603810190610198919061155c565b6105be565b005b6101b960048036038101906101b4919061155c565b6105e0565b005b3480156101c6575f80fd5b506101e160048036038101906101dc9190611471565b6105ff565b6040516101ee91906114db565b60405180910390f35b348015610202575f80fd5b5061021d600480360381019061021891906115ac565b61070c565b60405161022a91906115e6565b60405180910390f35b34801561023e575f80fd5b506102476107ab565b604051610254919061141e565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190611629565b6107e8565b005b61029f600480360381019061029a9190611793565b610917565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190611471565b61093c565b6040516102d4919061141e565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190611813565b6109ea565b6040516103109190611395565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b157506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104005750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600781526020017f4c31204e46547300000000000000000000000000000000000000000000000000815250905090565b5f61044e82610a78565b5f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61048f826105ff565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104c8575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610508575061050781336109ea565b5b610510575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6105c83382610a85565b6105d0575f80fd5b6105db838383610b19565b505050565b6105fa83838360405180602001604052805f815250610917565b505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b7261063984610cfd565b6040518263ffffffff1660e01b8152600401610655919061187a565b5f60405180830381865afa92505050801561069257506040513d5f823e3d601f19601f8201168201806040525081019061068f9190611aa6565b60015b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890611b37565b60405180910390fd5b6106de8160600151610d08565b6106e6575f80fd5b6106ef81610d3d565b6106f7575f80fd5b6107048160600151610d47565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078f9190611b7f565b90506107a361079e8483610e35565b611067565b915050919050565b60606040518060400160405280600c81526020017f436f6c6c656374696f6e4c310000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361081f575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161090b9190611395565b60405180910390a35050565b6109228484846105be565b61092e848484846110fb565b610936575f80fd5b50505050565b606061094782610a78565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c4276cc961098185610cfd565b6040518263ffffffff1660e01b815260040161099d919061187a565b5f60405180830381865afa1580156109b7573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906109df9190611c48565b905080915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610a81816105ff565b5050565b5f80610a90836105ff565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610aff57508373ffffffffffffffffffffffffffffffffffffffff16610ae784610444565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b105750610b0f81856109ea565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610b39826105ff565b73ffffffffffffffffffffffffffffffffffffffff1614610b58575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b8f575f80fd5b610b98816111e8565b610ba06112ad565b600167ffffffffffffffff811115610bbb57610bba61166f565b5b604051908082528060200260200182016040528015610be95781602001602082028036833780820191505090505b508160400181905250610bfb82610cfd565b81604001515f81518110610c1257610c11611c8f565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610c6f93929190611f66565b5f604051808303815f87803b158015610c86575f80fd5b505af1158015610c98573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610d2457610d23611c8f565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f60019050919050565b5f80601467ffffffffffffffff811115610d6457610d6361166f565b5b6040519080825280601f01601f191660200182016040528015610d965781602001600182028036833780820191505090505b5090505f5b6014811015610e1f57835f0151602182610db59190611fcf565b81518110610dc657610dc5611c8f565b5b602001015160f81c60f81b828281518110610de457610de3611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d9b565b5080610e2a9061205c565b60601c915050919050565b610e3d6112d7565b5f82604051602001610e4f91906120e2565b60405160208183030381529060405290505f84604051602001610e729190612141565b6040516020818303038152906040529050610e8b6112d7565b825182516001610e9b9190611fcf565b610ea59190611fcf565b67ffffffffffffffff811115610ebe57610ebd61166f565b5b6040519080825280601f01601f191660200182016040528015610ef05781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610f1357610f12611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610fc757838181518110610f5f57610f5e611c8f565b5b602001015160f81c60f81b825f0151600183610f7b9190611fcf565b81518110610f8c57610f8b611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610f43565b505f5b825181101561105a57828181518110610fe657610fe5611c8f565b5b602001015160f81c60f81b825f015185516001846110049190611fcf565b61100e9190611fcf565b8151811061101f5761101e611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610fca565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b81526004016110b59190612182565b602060405180830381865afa1580156110d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f491906121b6565b9050919050565b5f6111058461129c565b61111257600190506111e0565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016111529493929190612229565b6020604051808303815f875af115801561116e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111929190612287565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611299575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f80823b90505f8111915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61132f816112fb565b8114611339575f80fd5b50565b5f8135905061134a81611326565b92915050565b5f60208284031215611365576113646112f3565b5b5f6113728482850161133c565b91505092915050565b5f8115159050919050565b61138f8161137b565b82525050565b5f6020820190506113a85f830184611386565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6113f0826113ae565b6113fa81856113b8565b935061140a8185602086016113c8565b611413816113d6565b840191505092915050565b5f6020820190508181035f83015261143681846113e6565b905092915050565b5f819050919050565b6114508161143e565b811461145a575f80fd5b50565b5f8135905061146b81611447565b92915050565b5f60208284031215611486576114856112f3565b5b5f6114938482850161145d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114c58261149c565b9050919050565b6114d5816114bb565b82525050565b5f6020820190506114ee5f8301846114cc565b92915050565b6114fd816114bb565b8114611507575f80fd5b50565b5f81359050611518816114f4565b92915050565b5f8060408385031215611534576115336112f3565b5b5f6115418582860161150a565b92505060206115528582860161145d565b9150509250929050565b5f805f60608486031215611573576115726112f3565b5b5f6115808682870161150a565b93505060206115918682870161150a565b92505060406115a28682870161145d565b9150509250925092565b5f602082840312156115c1576115c06112f3565b5b5f6115ce8482850161150a565b91505092915050565b6115e08161143e565b82525050565b5f6020820190506115f95f8301846115d7565b92915050565b6116088161137b565b8114611612575f80fd5b50565b5f81359050611623816115ff565b92915050565b5f806040838503121561163f5761163e6112f3565b5b5f61164c8582860161150a565b925050602061165d85828601611615565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116a5826113d6565b810181811067ffffffffffffffff821117156116c4576116c361166f565b5b80604052505050565b5f6116d66112ea565b90506116e2828261169c565b919050565b5f67ffffffffffffffff8211156117015761170061166f565b5b61170a826113d6565b9050602081019050919050565b828183375f83830152505050565b5f611737611732846116e7565b6116cd565b9050828152602081018484840111156117535761175261166b565b5b61175e848285611717565b509392505050565b5f82601f83011261177a57611779611667565b5b813561178a848260208601611725565b91505092915050565b5f805f80608085870312156117ab576117aa6112f3565b5b5f6117b88782880161150a565b94505060206117c98782880161150a565b93505060406117da8782880161145d565b925050606085013567ffffffffffffffff8111156117fb576117fa6112f7565b5b61180787828801611766565b91505092959194509250565b5f8060408385031215611829576118286112f3565b5b5f6118368582860161150a565b92505060206118478582860161150a565b9150509250929050565b5f819050919050565b5f61186482611851565b9050919050565b6118748161185a565b82525050565b5f60208201905061188d5f83018461186b565b92915050565b5f80fd5b5f80fd5b6118a481611851565b81146118ae575f80fd5b50565b5f815190506118bf8161189b565b92915050565b5f6118d76118d2846116e7565b6116cd565b9050828152602081018484840111156118f3576118f261166b565b5b6118fe8482856113c8565b509392505050565b5f82601f83011261191a57611919611667565b5b815161192a8482602086016118c5565b91505092915050565b5f6020828403121561194857611947611893565b5b61195260206116cd565b90505f82015167ffffffffffffffff81111561197157611970611897565b5b61197d84828501611906565b5f8301525092915050565b5f6020828403121561199d5761199c611893565b5b6119a760206116cd565b90505f82015167ffffffffffffffff8111156119c6576119c5611897565b5b6119d284828501611906565b5f8301525092915050565b5f608082840312156119f2576119f1611893565b5b6119fc60806116cd565b90505f611a0b848285016118b1565b5f83015250602082015167ffffffffffffffff811115611a2e57611a2d611897565b5b611a3a84828501611933565b602083015250604082015167ffffffffffffffff811115611a5e57611a5d611897565b5b611a6a84828501611906565b604083015250606082015167ffffffffffffffff811115611a8e57611a8d611897565b5b611a9a84828501611988565b60608301525092915050565b5f60208284031215611abb57611aba6112f3565b5b5f82015167ffffffffffffffff811115611ad857611ad76112f7565b5b611ae4848285016119dd565b91505092915050565b7f4552433732314e6f6e6578697374656e74546f6b656e000000000000000000005f82015250565b5f611b216016836113b8565b9150611b2c82611aed565b602082019050919050565b5f6020820190508181035f830152611b4e81611b15565b9050919050565b611b5e81611851565b8114611b68575f80fd5b50565b5f81519050611b7981611b55565b92915050565b5f60208284031215611b9457611b936112f3565b5b5f611ba184828501611b6b565b91505092915050565b5f67ffffffffffffffff821115611bc457611bc361166f565b5b611bcd826113d6565b9050602081019050919050565b5f611bec611be784611baa565b6116cd565b905082815260208101848484011115611c0857611c0761166b565b5b611c138482856113c8565b509392505050565b5f82601f830112611c2f57611c2e611667565b5b8151611c3f848260208601611bda565b91505092915050565b5f60208284031215611c5d57611c5c6112f3565b5b5f82015167ffffffffffffffff811115611c7a57611c796112f7565b5b611c8684828501611c1b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611cd881611cbc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611d2b82611d07565b611d358185611d11565b9350611d458185602086016113c8565b611d4e816113d6565b840191505092915050565b5f602083015f8301518482035f860152611d738282611d21565b9150508091505092915050565b611d898161143e565b82525050565b5f604083015f8301518482035f860152611da98282611d59565b9150506020830151611dbe6020860182611d80565b508091505092915050565b5f611dd48383611d8f565b905092915050565b5f602082019050919050565b5f611df282611cde565b611dfc8185611ce8565b935083602082028501611e0e85611cf8565b805f5b85811015611e495784840389528151611e2a8582611dc9565b9450611e3583611ddc565b925060208a01995050600181019050611e11565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611e8d8161185a565b82525050565b5f611e9e8383611e84565b60208301905092915050565b5f602082019050919050565b5f611ec082611e5b565b611eca8185611e65565b9350611ed583611e75565b805f5b83811015611f05578151611eec8882611e93565b9750611ef783611eaa565b925050600181019050611ed8565b5085935050505092915050565b5f606083015f830151611f275f860182611ccf565b5060208301518482036020860152611f3f8282611de8565b91505060408301518482036040860152611f598282611eb6565b9150508091505092915050565b5f606082019050611f795f8301866114cc565b611f8660208301856114cc565b8181036040830152611f988184611f12565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fd98261143e565b9150611fe48361143e565b9250828201905080821115611ffc57611ffb611fa2565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6120478251612011565b80915050919050565b5f82821b905092915050565b5f61206682611d07565b8261207084612002565b905061207b8161203c565b925060148210156120bb576120b67fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802612050565b831692505b5050919050565b5f819050919050565b6120dc6120d78261185a565b6120c2565b82525050565b5f6120ed82846120cb565b60208201915081905092915050565b5f8160601b9050919050565b5f612112826120fc565b9050919050565b5f61212382612108565b9050919050565b61213b612136826114bb565b612119565b82525050565b5f61214c828461212a565b60148201915081905092915050565b5f602083015f8301518482035f8601526121758282611d21565b9150508091505092915050565b5f6020820190508181035f83015261219a818461215b565b905092915050565b5f815190506121b081611447565b92915050565b5f602082840312156121cb576121ca6112f3565b5b5f6121d8848285016121a2565b91505092915050565b5f82825260208201905092915050565b5f6121fb82611d07565b61220581856121e1565b93506122158185602086016113c8565b61221e816113d6565b840191505092915050565b5f60808201905061223c5f8301876114cc565b61224960208301866114cc565b61225660408301856115d7565b818103606083015261226881846121f1565b905095945050505050565b5f8151905061228181611326565b92915050565b5f6020828403121561229c5761229b6112f3565b5b5f6122a984828501612273565b9150509291505056fea2646970667358221220f3698eaf20cd5c04eb6cf131339c52b39463e694f6a9ff429ab39ff2a9c881e264736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ISCSandbox.abi b/packages/vm/core/evm/iscmagic/ISCSandbox.abi index a899c259f1..1ab50e40f7 100644 --- a/packages/vm/core/evm/iscmagic/ISCSandbox.abi +++ b/packages/vm/core/evm/iscmagic/ISCSandbox.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"allow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"call","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"}],"name":"callView","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"erc20NativeTokensAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"erc20NativeTokensFoundrySerialNumber","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"collectionID","type":"bytes32"}],"name":"erc721NFTCollectionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"getAllowance","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getAllowanceFrom","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getAllowanceTo","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseTokenProperties","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"tickerSymbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct ISCTokenProperties","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"ISCChainID","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainOwnerID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntropy","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27NFTData","outputs":[{"components":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"nft","type":"tuple"},{"components":[{"internalType":"string","name":"standard","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"string","name":"mimeType","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"attributes","type":"string"}],"internalType":"struct IRC27NFTMetadata","name":"metadata","type":"tuple"}],"internalType":"struct IRC27NFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27TokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getNFTData","outputs":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenScheme","outputs":[{"components":[{"internalType":"uint256","name":"mintedTokens","type":"uint256"},{"internalType":"uint256","name":"meltedTokens","type":"uint256"},{"internalType":"uint256","name":"maximumSupply","type":"uint256"}],"internalType":"struct NativeTokenScheme","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequestID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCRequestID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSenderAccount","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimestampUnixSeconds","outputs":[{"internalType":"int64","name":"","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"registerERC20NativeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"targetAddress","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"assets","type":"tuple"},{"internalType":"bool","name":"adjustMinimumStorageDeposit","type":"bool"},{"components":[{"internalType":"ISCHname","name":"targetContract","type":"uint32"},{"internalType":"ISCHname","name":"entrypoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"},{"internalType":"uint64","name":"gasBudget","type":"uint64"}],"internalType":"struct ISCSendMetadata","name":"metadata","type":"tuple"},{"components":[{"internalType":"int64","name":"timelock","type":"int64"},{"components":[{"internalType":"int64","name":"time","type":"int64"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"returnAddress","type":"tuple"}],"internalType":"struct ISCExpiration","name":"expiration","type":"tuple"}],"internalType":"struct ISCSendOptions","name":"sendOptions","type":"tuple"}],"name":"send","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"takeAllowedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"allow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"call","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"}],"name":"callView","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"erc20NativeTokensAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"erc20NativeTokensFoundrySerialNumber","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"collectionID","type":"bytes32"}],"name":"erc721NFTCollectionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"getAllowance","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getAllowanceFrom","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getAllowanceTo","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseTokenProperties","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"tickerSymbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct ISCTokenProperties","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"ISCChainID","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainOwnerID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntropy","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27NFTData","outputs":[{"components":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"nft","type":"tuple"},{"components":[{"internalType":"string","name":"standard","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"string","name":"mimeType","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct IRC27NFTMetadata","name":"metadata","type":"tuple"}],"internalType":"struct IRC27NFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27TokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getNFTData","outputs":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenScheme","outputs":[{"components":[{"internalType":"uint256","name":"mintedTokens","type":"uint256"},{"internalType":"uint256","name":"meltedTokens","type":"uint256"},{"internalType":"uint256","name":"maximumSupply","type":"uint256"}],"internalType":"struct NativeTokenScheme","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequestID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCRequestID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSenderAccount","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimestampUnixSeconds","outputs":[{"internalType":"int64","name":"","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"registerERC20NativeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"targetAddress","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"assets","type":"tuple"},{"internalType":"bool","name":"adjustMinimumStorageDeposit","type":"bool"},{"components":[{"internalType":"ISCHname","name":"targetContract","type":"uint32"},{"internalType":"ISCHname","name":"entrypoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"},{"internalType":"uint64","name":"gasBudget","type":"uint64"}],"internalType":"struct ISCSendMetadata","name":"metadata","type":"tuple"},{"components":[{"internalType":"int64","name":"timelock","type":"int64"},{"components":[{"internalType":"int64","name":"time","type":"int64"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"returnAddress","type":"tuple"}],"internalType":"struct ISCExpiration","name":"expiration","type":"tuple"}],"internalType":"struct ISCSendOptions","name":"sendOptions","type":"tuple"}],"name":"send","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"takeAllowedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ISCSandbox.sol b/packages/vm/core/evm/iscmagic/ISCSandbox.sol index 408728d70a..d9c7f6f10a 100644 --- a/packages/vm/core/evm/iscmagic/ISCSandbox.sol +++ b/packages/vm/core/evm/iscmagic/ISCSandbox.sol @@ -107,12 +107,7 @@ interface ISCSandbox { function getNFTData(NFTID id) external view returns (ISCNFT memory); // Get information about an on-chain IRC27 NFT - // Note: the metadata.uri field is encoded as a data URL with: - // base64(jsonEncode({ - // "name": NFT.name, - // "description": NFT.description, - // "image": NFT.URI - // })) + // NOTE: metadata does not include attributes, use `getIRC27TokenURI` to get those attributes off-chain in JSON form function getIRC27NFTData(NFTID id) external view returns (IRC27NFT memory); // Get information about an on-chain IRC27 NFT diff --git a/packages/vm/core/evm/iscmagic/ISCTypes.sol b/packages/vm/core/evm/iscmagic/ISCTypes.sol index 6f4f10806a..6792d0bfc0 100644 --- a/packages/vm/core/evm/iscmagic/ISCTypes.sol +++ b/packages/vm/core/evm/iscmagic/ISCTypes.sol @@ -61,7 +61,6 @@ struct IRC27NFTMetadata { string uri; string name; string description; - string attributes; } // Information about an on-chain IRC27 NFT diff --git a/packages/vm/core/evm/iscmagic/types.go b/packages/vm/core/evm/iscmagic/types.go index cd13a6b88f..77cc493af1 100644 --- a/packages/vm/core/evm/iscmagic/types.go +++ b/packages/vm/core/evm/iscmagic/types.go @@ -218,7 +218,6 @@ type IRC27NFTMetadata struct { Uri string //nolint:revive // false positive Name string Description string - Attributes string } func WrapIRC27NFTMetadata(m *isc.IRC27NFTMetadata) IRC27NFTMetadata { @@ -229,7 +228,6 @@ func WrapIRC27NFTMetadata(m *isc.IRC27NFTMetadata) IRC27NFTMetadata { Uri: m.URI, Name: m.Name, Description: m.Description, - Attributes: m.Attributes, } } diff --git a/packages/vm/core/evm/nfthack.go b/packages/vm/core/evm/nfthack.go index 7be02010bc..1b848fe02c 100644 --- a/packages/vm/core/evm/nfthack.go +++ b/packages/vm/core/evm/nfthack.go @@ -15,10 +15,10 @@ import ( // This hack is so that the ERC721 tokenURI view function returns the NFT name and description // for explorers type PackedNFTURI struct { - Name string `json:"name"` - Description string `json:"description,omitempty"` - Attributes string `json:"attributes,omitempty"` - Image string `json:"image"` + Name string `json:"name"` + Description string `json:"description,omitempty"` + Attributes []interface{} `json:"attributes,omitempty"` + Image string `json:"image"` } const dataURLPrefix = "data:application/json;base64" diff --git a/packages/vm/core/testcore/accounts_test.go b/packages/vm/core/testcore/accounts_test.go index 6ee4df93f6..91611431c0 100644 --- a/packages/vm/core/testcore/accounts_test.go +++ b/packages/vm/core/testcore/accounts_test.go @@ -1459,7 +1459,7 @@ func TestNonces(t *testing.T) { func TestNFTMint(t *testing.T) { env := solo.New(t) ch := env.NewChain() - mockNFTMetadata := isc.NewIRC27NFTMetadata("foo/bar", "", "foobar", "[]").Bytes() + mockNFTMetadata := isc.NewIRC27NFTMetadata("foo/bar", "", "foobar", nil).Bytes() _seedIndex := 0 seedIndex := func() int { @@ -1597,7 +1597,7 @@ func TestNFTMint(t *testing.T) { req = solo.NewCallParams( accounts.Contract.Name, accounts.FuncMintNFT.Name, - accounts.ParamNFTImmutableData, isc.NewIRC27NFTMetadata("foo/bar/collection", "", "foobar_collection", "").Bytes(), + accounts.ParamNFTImmutableData, isc.NewIRC27NFTMetadata("foo/bar/collection", "", "foobar_collection", nil).Bytes(), accounts.ParamAgentID, agentID.Bytes(), accounts.ParamCollectionID, codec.Encode(firstNFTID), ).