diff --git a/go.mod b/go.mod index be037ce3..e5434920 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/ava-labs/avalanchego v1.11.10 github.com/ava-labs/coreth v0.13.7 github.com/ava-labs/subnet-evm v0.6.8 - github.com/ava-labs/teleporter v1.0.4 + github.com/ava-labs/teleporter v1.0.5 github.com/aws/aws-sdk-go-v2 v1.30.3 github.com/aws/aws-sdk-go-v2/config v1.27.9 github.com/aws/aws-sdk-go-v2/service/kms v1.35.3 diff --git a/go.sum b/go.sum index 37ef5232..f7096f4c 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,8 @@ github.com/ava-labs/coreth v0.13.7 h1:k8T9u/ROifl8f7oXjHRc1KvSISRl9txvy7gGVmHEz6 github.com/ava-labs/coreth v0.13.7/go.mod h1:tXDujonxXFOF6oK5HS2EmgtSXJK3Gy6RpZxb5WzR9rM= github.com/ava-labs/subnet-evm v0.6.8 h1:IrHGajBYWs692YIYdd5J0oVWWt88Q/XAZQq/dOtkHFw= github.com/ava-labs/subnet-evm v0.6.8/go.mod h1:qt8DXyGm40CY9yffNOe1+4yUyL9mD3v5RPWqAuGj5u4= -github.com/ava-labs/teleporter v1.0.4 h1:+OAS3YyPc/LijR29qu3EqU6xAnQnjOgf4EtDlCMcDsc= -github.com/ava-labs/teleporter v1.0.4/go.mod h1:bUiOSIGjFktkYg01XDjeaZdgLEx0ZpUDfJXI6Z0rHY8= +github.com/ava-labs/teleporter v1.0.5 h1:51fRzvo7eo9VotYq6cldx+yoAkEk5o9yCXOJ6q3tSEo= +github.com/ava-labs/teleporter v1.0.5/go.mod h1:C5/ETmPQh/MxZOCARrhPV+J40y4R3TOeT0lvQrjz/RE= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/config v1.27.9 h1:gRx/NwpNEFSk+yQlgmk1bmxxvQ5TyJ76CWXs9XScTqg= diff --git a/tests/contracts/lib/teleporter b/tests/contracts/lib/teleporter index 8b7d7245..d0431354 160000 --- a/tests/contracts/lib/teleporter +++ b/tests/contracts/lib/teleporter @@ -1 +1 @@ -Subproject commit 8b7d7245d6998f14a0655b86670c998ba5e5f964 +Subproject commit d04313542b05d87502433d6d72c6f4ca49d648dd diff --git a/tests/e2e_test.go b/tests/e2e_test.go index 7de98215..680e93f5 100644 --- a/tests/e2e_test.go +++ b/tests/e2e_test.go @@ -45,23 +45,6 @@ func TestE2E(t *testing.T) { // Define the Relayer before and after suite functions. var _ = ginkgo.BeforeSuite(func() { - localNetworkInstance = local.NewLocalNetwork( - "awm-relayer-e2e-test", - warpGenesisTemplateFile, - []local.SubnetSpec{ - { - Name: "A", - EVMChainID: 12345, - NodeCount: 2, - }, - { - Name: "B", - EVMChainID: 54321, - NodeCount: 2, - }, - }, - 0, - ) // Generate the Teleporter deployment values teleporterContractAddress := common.HexToAddress( testUtils.ReadHexTextFile("./tests/utils/UniversalTeleporterMessengerContractAddress.txt"), @@ -69,6 +52,9 @@ var _ = ginkgo.BeforeSuite(func() { teleporterDeployerAddress := common.HexToAddress( testUtils.ReadHexTextFile("./tests/utils/UniversalTeleporterDeployerAddress.txt"), ) + teleporterDeployedByteCode := testUtils.ReadHexTextFile( + "./tests/utils/UniversalTeleporterDeployedBytecode.txt", + ) teleporterDeployerTransactionStr := testUtils.ReadHexTextFile( "./tests/utils/UniversalTeleporterDeployerTransaction.txt", ) @@ -76,20 +62,42 @@ var _ = ginkgo.BeforeSuite(func() { utils.SanitizeHexString(teleporterDeployerTransactionStr), ) Expect(err).Should(BeNil()) + localNetworkInstance = local.NewLocalNetwork( + "awm-relayer-e2e-test", + warpGenesisTemplateFile, + []local.SubnetSpec{ + { + Name: "A", + EVMChainID: 12345, + TeleporterContractAddress: teleporterContractAddress, + TeleporterDeployedBytecode: teleporterDeployedByteCode, + TeleporterDeployerAddress: teleporterDeployerAddress, + NodeCount: 2, + }, + { + Name: "B", + EVMChainID: 54321, + TeleporterContractAddress: teleporterContractAddress, + TeleporterDeployedBytecode: teleporterDeployedByteCode, + TeleporterDeployerAddress: teleporterDeployerAddress, + NodeCount: 2, + }, + }, + 0, + ) _, fundedKey := localNetworkInstance.GetFundedAccountInfo() - localNetworkInstance.DeployTeleporterContracts( + log.Info("Deployed Teleporter contracts") + localNetworkInstance.DeployTeleporterContractToCChain( teleporterDeployerTransaction, teleporterDeployerAddress, teleporterContractAddress, fundedKey, - true, - ) - log.Info("Deployed Teleporter contracts") - localNetworkInstance.DeployTeleporterRegistryContracts( - teleporterContractAddress, - fundedKey, ) + localNetworkInstance.SetTeleporterContractAddress(teleporterContractAddress) + + // Deploy the Teleporter registry contracts to all subnets and the C-Chain. + localNetworkInstance.DeployTeleporterRegistryContracts(teleporterContractAddress, fundedKey) var ctx context.Context ctx, cancelDecider = context.WithCancel(context.Background()) diff --git a/tests/utils/UniversalTeleporterDeployedBytecode.txt b/tests/utils/UniversalTeleporterDeployedBytecode.txt new file mode 100755 index 00000000..ae2f30f2 --- /dev/null +++ b/tests/utils/UniversalTeleporterDeployedBytecode.txt @@ -0,0 +1 @@ +0x608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612014565b6104f3565b005b61015461018a36600461202f565b6105e6565b6101d961019d36600461202f565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612046565b6101fa6101f536600461202f565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461202f565b5f9081526005602052604090205490565b61015461023f36600461206d565b610689565b61017a6102523660046120ba565b6106e2565b61015461026536600461202f565b60066020525f908152604090205481565b6102896102843660046120eb565b610885565b60405161015e919061210b565b61017a6102a436600461212b565b6108b6565b6101546102b7366004612160565b610aed565b6101546102ca3660046121d0565b610b2f565b6101fa6005600160991b0181565b6101546102eb366004612261565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612298565b610dc1565b61015460025481565b61015461033f36600461202f565b6111e3565b61038c61035236600461202f565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461202f565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461202f565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046122bc565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906122ff565b9050806104be5760405162461bcd60e51b81526004016104b590612316565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061235d565b60025f556106d86106bb836125b6565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061235d565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612655565b5f8360405160200161079491906128de565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906128f0565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612939565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a9084906004016129ba565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906122ff565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061235d565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b5906129cc565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612a11565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612655565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612a79565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061235d565b60025f818155905490866001600160401b03811115610b7257610b726123a0565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612a8c565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612a8c565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612aa0565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b5906129cc565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612b07565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612c83565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612a8c565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612e89565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612316565b5f60035460016112159190612a79565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b5906129cc565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612655565b80836040516020016112b791906128de565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906128f0565b5f6112fb6080850160608601612014565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612014565b6113cb60e0870187612eac565b6040516024016113de9493929190612eee565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612014565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91612f18565b60605f611520600561151b856114f8565b611e6c565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b03811115611585576115856123a0565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e7b565b8282815181106115f1576115f1612a8c565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90612f2b565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac9190612f43565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612a11565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b69088908690612f55565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e89086906004016129ba565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906122ff565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612a79565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906122ff565b90506119796001600160a01b038516333086611f45565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906122ff565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282612f18565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612a8c565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612a79565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b9190612f67565b60405180910390a45050505050565b600182018054829160028501915f9182611c7383612f2b565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f7e565b602081015160e08201516040515f92611d53928692602401612f87565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f7e565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f8060205f8451602086015f885af180611e19576040513d5f823e3d81fd5b50505f513d91508115611e30578060011415611e3d565b6001600160a01b0384163b155b15611e6657604051635274afe760e01b81526001600160a01b03851660048201526024016104b5565b50505050565b5f8282188284100282186108af565b604080518082019091525f808252602082015281546001830154819003611ee45760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f3b908390612a79565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611e669186918216906323b872dd906084016114c1565b80604051602001611f8f9190612f43565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe5908590612f43565b60405180910390a3505050565b6001600160a01b0381168114612006575f80fd5b50565b80356104ee81611ff2565b5f60208284031215612024575f80fd5b81356108af81611ff2565b5f6020828403121561203f575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561207d575f80fd5b81356001600160401b03811115612092575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156120b4575f80fd5b50919050565b5f602082840312156120ca575f80fd5b81356001600160401b038111156120df575f80fd5b611222848285016120a3565b5f80604083850312156120fc575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561213d575f80fd5b83359250602084013561214f81611ff2565b929592945050506040919091013590565b5f805f60608486031215612172575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612199575f80fd5b5081356001600160401b038111156121af575f80fd5b6020830191508360208260051b85010111156121c9575f80fd5b9250929050565b5f805f805f8086880360a08112156121e6575f80fd5b8735965060208801356001600160401b0380821115612203575f80fd5b61220f8b838c01612189565b90985096508691506040603f1984011215612228575f80fd5b60408a01955060808a0135925080831115612241575f80fd5b505061224f89828a01612189565b979a9699509497509295939492505050565b5f8060408385031215612272575f80fd5b823561227d81611ff2565b9150602083013561228d81611ff2565b809150509250929050565b5f80604083850312156122a9575f80fd5b823563ffffffff8116811461227d575f80fd5b5f80604083850312156122cd575f80fd5b8235915060208301356001600160401b038111156122e9575f80fd5b6122f5858286016120a3565b9150509250929050565b5f6020828403121561230f575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156123d6576123d66123a0565b60405290565b60405160c081016001600160401b03811182821017156123d6576123d66123a0565b604051606081016001600160401b03811182821017156123d6576123d66123a0565b60405161010081016001600160401b03811182821017156123d6576123d66123a0565b604051601f8201601f191681016001600160401b038111828210171561246b5761246b6123a0565b604052919050565b5f60408284031215612483575f80fd5b61248b6123b4565b9050813561249881611ff2565b808252506020820135602082015292915050565b5f6001600160401b038211156124c4576124c46123a0565b5060051b60200190565b5f82601f8301126124dd575f80fd5b813560206124f26124ed836124ac565b612443565b8083825260208201915060208460051b870101935086841115612513575f80fd5b602086015b8481101561253857803561252b81611ff2565b8352918301918301612518565b509695505050505050565b5f6001600160401b0382111561255b5761255b6123a0565b50601f01601f191660200190565b5f82601f830112612578575f80fd5b81356125866124ed82612543565b81815284602083860101111561259a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156125c6575f80fd5b6125ce6123dc565b823581526125de60208401612009565b60208201526125f03660408501612473565b60408201526080830135606082015260a08301356001600160401b0380821115612618575f80fd5b612624368387016124ce565b608084015260c085013591508082111561263c575f80fd5b5061264936828601612569565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e198436030181126126b0575f80fd5b83016020810192503590506001600160401b038111156126ce575f80fd5b8060051b36038213156121c9575f80fd5b8183525f60208085019450825f5b8581101561271b57813561270081611ff2565b6001600160a01b0316875295820195908201906001016126ed565b509495945050505050565b5f808335601e1984360301811261273b575f80fd5b83016020810192503590506001600160401b03811115612759575f80fd5b8060061b36038213156121c9575f80fd5b8183525f60208085019450825f5b8581101561271b57813587528282013561279181611ff2565b6001600160a01b0316878401526040968701969190910190600101612778565b5f808335601e198436030181126127c6575f80fd5b83016020810192503590506001600160401b038111156127e4575f80fd5b8036038213156121c9575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561283081611ff2565b6001600160a01b031660208501526040838101359085015261285460608401612009565b6001600160a01b031660608501526080838101359085015261287960a084018461269b565b8260a087015261288c83870182846126df565b9250505061289d60c0840184612726565b85830360c08701526128b083828461276a565b925050506128c160e08401846127b1565b85830360e08701526128d48382846127f2565b9695505050505050565b602081525f6108af602083018461281a565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f61294b606083018561281a565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b8381101561298757818101518382015260200161296f565b50505f910152565b5f81518084526129a681602086016020860161296d565b601f01601f19169290920160200192915050565b602081525f6108af602083018461298f565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612a65565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612ab0575f80fd5b6108af8383612473565b80516104ee81611ff2565b5f82601f830112612ad4575f80fd5b8151612ae26124ed82612543565b818152846020838601011115612af6575f80fd5b61122282602083016020870161296d565b5f8060408385031215612b18575f80fd5b82516001600160401b0380821115612b2e575f80fd5b9084019060608287031215612b41575f80fd5b612b496123fe565b825181526020830151612b5b81611ff2565b6020820152604083015182811115612b71575f80fd5b612b7d88828601612ac5565b6040830152508094505050506020830151801515811461228d575f80fd5b5f82601f830112612baa575f80fd5b81516020612bba6124ed836124ac565b8083825260208201915060208460051b870101935086841115612bdb575f80fd5b602086015b84811015612538578051612bf381611ff2565b8352918301918301612be0565b5f82601f830112612c0f575f80fd5b81516020612c1f6124ed836124ac565b82815260069290921b84018101918181019086841115612c3d575f80fd5b8286015b848110156125385760408189031215612c58575f80fd5b612c606123b4565b8151815284820151612c7181611ff2565b81860152835291830191604001612c41565b5f60208284031215612c93575f80fd5b81516001600160401b0380821115612ca9575f80fd5b908301906101008286031215612cbd575f80fd5b612cc5612420565b82518152612cd560208401612aba565b602082015260408301516040820152612cf060608401612aba565b60608201526080830151608082015260a083015182811115612d10575f80fd5b612d1c87828601612b9b565b60a08301525060c083015182811115612d33575f80fd5b612d3f87828601612c00565b60c08301525060e083015182811115612d56575f80fd5b612d6287828601612ac5565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b8381101561271b5781516001600160a01b031687529582019590820190600101612d84565b5f815180845260208085019450602084015f5b8381101561271b57612de2878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612dbc565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612e3360608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612e5582860182612d71565b91505060c083015184820360c0860152612e6f8282612da9565b91505060e083015184820360e0860152611a51828261298f565b6001600160a01b03831681526040602082018190525f9061122290830184612df5565b5f808335601e19843603018112612ec1575f80fd5b8301803591506001600160401b03821115612eda575f80fd5b6020019150368190038213156121c9575f80fd5b8481526001600160a01b03841660208201526060604082018190525f906128d490830184866127f2565b818103818111156105fc576105fc612a65565b5f60018201612f3c57612f3c612a65565b5060010190565b602081525f6108af6020830184612df5565b606081525f61294b6060830185612df5565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a519083018461298f56fea164736f6c6343000819000a \ No newline at end of file diff --git a/tests/utils/UniversalTeleporterDeployerAddress.txt b/tests/utils/UniversalTeleporterDeployerAddress.txt index eab789c2..444a83eb 100755 --- a/tests/utils/UniversalTeleporterDeployerAddress.txt +++ b/tests/utils/UniversalTeleporterDeployerAddress.txt @@ -1 +1 @@ -0x7307D51641453D3DbB28c0c3303D5661e3Bc9507 +0xB845be8Fca46B198ad68b60112F0C9b7910B5086 \ No newline at end of file diff --git a/tests/utils/UniversalTeleporterDeployerTransaction.txt b/tests/utils/UniversalTeleporterDeployerTransaction.txt index 85a0a78a..45f0d8f6 100755 --- a/tests/utils/UniversalTeleporterDeployerTransaction.txt +++ b/tests/utils/UniversalTeleporterDeployerTransaction.txt @@ -1 +1 @@ -0xf933ab80860246139ca800833d09008080b933576080604052600160035534801561001557600080fd5b506001600081905580556133298061002e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b3660046122a5565b610503565b005b61015a6101903660046122c2565b6105f8565b6101e06101a33660046122c2565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b6040516101649291906122db565b6102016101fc3660046122c2565b610615565b6040516001600160a01b039091168152602001610164565b61015a6102273660046122c2565b60009081526005602052604090205490565b61015a610247366004612302565b61069e565b61018061025a366004612355565b6106fc565b61015a61026d3660046122c2565b60066020526000908152604090205481565b61029261028d366004612389565b6108a7565b60405161016491906123ab565b6101806102ad3660046123cb565b6108da565b61015a6102c0366004612403565b610b19565b61015a6102d336600461247a565b610b5c565b6102016005600160991b0181565b61015a6102f4366004612512565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d36600461254b565b610e03565b61015a60025481565b61015a6103493660046122c2565b61123d565b61039761035c3660046122c2565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c43660046122c2565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b6104056104003660046122c2565b61126d565b6040519015158152602001610164565b61015a60035481565b61018061042c366004612572565b611283565b600254600090806104fe576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a591906125b8565b9050806104cd5760405162461bcd60e51b81526004016104c4906125d1565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b10490600090a25b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105855760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104c4565b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105f46001600160a01b03831633836114de565b5050565b600081815260046020526040812061060f90611546565b92915050565b6000818152600760205260408120546106825760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104c4565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106c25760405162461bcd60e51b81526004016104c490612618565b60026000556106f16106d383612858565b833560009081526004602052604090206106ec90611559565b611663565b600160005592915050565b60016000541461071e5760405162461bcd60e51b81526004016104c490612618565b6002600081815590546107379060408401358435610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280519192509061079f5760405162461bcd60e51b81526004016104c4906128fb565b6000836040516020016107b29190612b96565b60408051601f19818403018152919052825181516020830120919250146107eb5760405162461bcd60e51b81526004016104c490612ba9565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610826929190612bf2565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90610858908490600401612c77565b6020604051808303816000875af1158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b91906125b8565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108d390836118a3565b9392505050565b6001600054146108fc5760405162461bcd60e51b81526004016104c490612618565b600260005560018054146109225760405162461bcd60e51b81526004016104c490612c8a565b60026001558061098c5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104c4565b6001600160a01b0382166109b25760405162461bcd60e51b81526004016104c490612ccf565b6000838152600560205260409020546109dd5760405162461bcd60e51b81526004016104c4906128fb565b6000838152600560205260409020600101546001600160a01b03838116911614610a6f5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104c4565b6000610a7b8383611968565b600085815260056020526040812060020180549293508392909190610aa1908490612d39565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610b03916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080556000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b805760405162461bcd60e51b81526004016104c490612618565b60026000818155905490866001600160401b03811115610ba257610ba261265b565b604051908082528060200260200182016040528015610be757816020015b6040805180820190915260008082526020820152815260200190600190039081610bc05790505b5090508660005b81811015610d6c5760008a8a83818110610c0a57610c0a612d4c565b90506020020135905060006007600083815260200190815260200160002054905080600003610c8a5760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104c4565b610c958d8783610b19565b8214610d095760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d206f726967696e20626c6f636b636861696e00000000000060648201526084016104c4565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d4d57610d4d612d4c565b602002602001018190525050505080610d6590612d62565b9050610bee565b506040805160c0810182528b815260006020820152610df0918101610d96368b90038b018b612d7b565b81526020016000815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604080519283526020808401909152909201525083611663565b60016000559a9950505050505050505050565b6001805414610e245760405162461bcd60e51b81526004016104c490612c8a565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9e9190810190612df7565b9150915080610f015760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104c4565b60208201516001600160a01b03163014610f785760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104c4565b60008260400151806020019051810190610f929190612f94565b90506000610f9e610431565b90508082604001511461100d5760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104c4565b8351825160009161101f918490610b19565b600081815260076020526040902054909150156110945760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104c4565b6110a2338460a00151611ad0565b6111005760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104c4565b61110e818460000151611b48565b6001600160a01b0386161561114557600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b81811015611192576111828488600001518760c00151848151811061117557611175612d4c565b6020026020010151611bba565b61118b81612d62565b905061114e565b50604080518082018252855181526001600160a01b038916602080830191909152885160009081526004909152919091206111cc91611ce2565b336001600160a01b03168660000151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a8860405161120d9291906131a4565b60405180910390a460e0840151511561122f5761122f82876000015186611d3e565b505060018055505050505050565b600254600090806112605760405162461bcd60e51b81526004016104c4906125d1565b6108d38184600354610b19565b600081815260076020526040812054151561060f565b60018054146112a45760405162461bcd60e51b81526004016104c490612c8a565b60026001819055546000906112bc9084908435610b19565b600081815260066020526040902054909150806112eb5760405162461bcd60e51b81526004016104c4906128fb565b80836040516020016112fd9190612b96565b60405160208183030381529060405280519060200120146113305760405162461bcd60e51b81526004016104c490612ba9565b600061134260808501606086016122a5565b6001600160a01b03163b116113b65760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104c4565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a3600082815260066020908152604080832083905586916114079187019087016122a5565b61141460e08701876131c8565b604051602401611427949392919061320e565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b1790529050600061146f61146860808701606088016122a5565b5a84611e71565b9050806114d25760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104c4565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261154190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611e8b565b505050565b8054600182015460009161060f91613239565b60606000611570600561156b85611546565b611f5d565b9050806000036115bf5760408051600080825260208201909252906115b7565b60408051808201909152600080825260208201528152602001906001900390816115905790505b509392505050565b6000816001600160401b038111156115d9576115d961265b565b60405190808252806020026020018201604052801561161e57816020015b60408051808201909152600080825260208201528152602001906001900390816115f75790505b50905060005b828110156115b75761163585611f73565b82828151811061164757611647612d4c565b60200260200101819052508061165c90612d62565b9050611624565b60008061166e610431565b905060006003549050600061168883876000015184610b19565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a001518152509050600081604051602001611701919061324c565b604051602081830303815290604052905060036000815461172190612d62565b909155506040880151602001516000901561177b576040890151516001600160a01b03166117615760405162461bcd60e51b81526004016104c490612ccf565b604089015180516020909101516117789190611968565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df89061181f908890869061325f565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90611851908690600401612c77565b6020604051808303816000875af1158015611870573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189491906125b8565b50939998505050505050505050565b60408051808201909152600080825260208201526118c083611546565b82106119185760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104c4565b82600201600083856000015461192e9190612d39565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156119b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d591906125b8565b90506119ec6001600160a01b03851633308661203f565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5791906125b8565b9050818111611abd5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104c4565b611ac78282613239565b95945050505050565b60008151600003611ae35750600161060f565b815160005b81811015611b3d57846001600160a01b0316848281518110611b0c57611b0c612d4c565b60200260200101516001600160a01b031603611b2d5760019250505061060f565b611b3681612d62565b9050611ae8565b506000949350505050565b80600003611ba85760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104c4565b60009182526007602052604090912055565b6000611bcb84848460000151610b19565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611c22575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c89908490612d39565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611cd39190613272565b60405180910390a45050505050565b6001820180548291600285019160009182611cfc83612d62565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611da05760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104c4565b80606001516001600160a01b03163b600003611dc15761154183838361207d565b602081015160e0820151604051600092611ddf928692602401613292565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611e24919084611e71565b905080611e3d57611e3685858561207d565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611ee0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120f29092919063ffffffff16565b8051909150156115415780806020019051810190611efe91906132bc565b6115415760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104c4565b6000818310611f6c57816108d3565b5090919050565b604080518082019091526000808252602082015281546001830154819003611fdd5760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104c4565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590612035908390612d39565b9093555090919050565b6040516001600160a01b03808516602483015283166044820152606481018290526120779085906323b872dd60e01b9060840161150a565b50505050565b8060405160200161208e919061324c565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c985906120e590859061324c565b60405180910390a3505050565b60606121018484600085612109565b949350505050565b60608247101561216a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104c4565b600080866001600160a01b0316858760405161218691906132d7565b60006040518083038185875af1925050503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b50915091506121d9878383876121e4565b979650505050505050565b6060831561225357825160000361224c576001600160a01b0385163b61224c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104c4565b5081612101565b61210183838151156122685781518083602001fd5b8060405162461bcd60e51b81526004016104c49190612c77565b6001600160a01b038116811461229757600080fd5b50565b80356104fe81612282565b6000602082840312156122b757600080fd5b81356108d381612282565b6000602082840312156122d457600080fd5b5035919050565b828152606081016108d3602083018480516001600160a01b03168252602090810151910152565b60006020828403121561231457600080fd5b81356001600160401b0381111561232a57600080fd5b820160e081850312156108d357600080fd5b6000610100828403121561234f57600080fd5b50919050565b60006020828403121561236757600080fd5b81356001600160401b0381111561237d57600080fd5b6121018482850161233c565b6000806040838503121561239c57600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b0316908201526040810161060f565b6000806000606084860312156123e057600080fd5b8335925060208401356123f281612282565b929592945050506040919091013590565b60008060006060848603121561241857600080fd5b505081359360208301359350604090920135919050565b60008083601f84011261244157600080fd5b5081356001600160401b0381111561245857600080fd5b6020830191508360208260051b850101111561247357600080fd5b9250929050565b60008060008060008086880360a081121561249457600080fd5b8735965060208801356001600160401b03808211156124b257600080fd5b6124be8b838c0161242f565b90985096508691506040603f19840112156124d857600080fd5b60408a01955060808a01359250808311156124f257600080fd5b505061250089828a0161242f565b979a9699509497509295939492505050565b6000806040838503121561252557600080fd5b823561253081612282565b9150602083013561254081612282565b809150509250929050565b6000806040838503121561255e57600080fd5b823563ffffffff8116811461253057600080fd5b6000806040838503121561258557600080fd5b8235915060208301356001600160401b038111156125a257600080fd5b6125ae8582860161233c565b9150509250929050565b6000602082840312156125ca57600080fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156126935761269361265b565b60405290565b60405160c081016001600160401b03811182821017156126935761269361265b565b60405161010081016001600160401b03811182821017156126935761269361265b565b604051601f8201601f191681016001600160401b03811182821017156127065761270661265b565b604052919050565b60006040828403121561272057600080fd5b612728612671565b9050813561273581612282565b808252506020820135602082015292915050565b60006001600160401b038211156127625761276261265b565b5060051b60200190565b600082601f83011261277d57600080fd5b8135602061279261278d83612749565b6126de565b82815260059290921b840181019181810190868411156127b157600080fd5b8286015b848110156127d55780356127c881612282565b83529183019183016127b5565b509695505050505050565b60006001600160401b038211156127f9576127f961265b565b50601f01601f191660200190565b600082601f83011261281857600080fd5b813561282661278d826127e0565b81815284602083860101111561283b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561286a57600080fd5b612872612699565b823581526128826020840161229a565b6020820152612894366040850161270e565b60408201526080830135606082015260a08301356001600160401b03808211156128bd57600080fd5b6128c93683870161276c565b608084015260c08501359150808211156128e257600080fd5b506128ef36828601612807565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261295857600080fd5b83016020810192503590506001600160401b0381111561297757600080fd5b8060051b360382131561247357600080fd5b8183526000602080850194508260005b858110156129c75781356129ac81612282565b6001600160a01b031687529582019590820190600101612999565b509495945050505050565b6000808335601e198436030181126129e957600080fd5b83016020810192503590506001600160401b03811115612a0857600080fd5b8060061b360382131561247357600080fd5b8183526000602080850194508260005b858110156129c7578135875282820135612a4381612282565b6001600160a01b0316878401526040968701969190910190600101612a2a565b6000808335601e19843603018112612a7a57600080fd5b83016020810192503590506001600160401b03811115612a9957600080fd5b80360382131561247357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612ae881612282565b6001600160a01b0316602085015260408381013590850152612b0c6060840161229a565b6001600160a01b0316606085015260808381013590850152612b3160a0840184612941565b8260a0870152612b448387018284612989565b92505050612b5560c08401846129d2565b85830360c0870152612b68838284612a1a565b92505050612b7960e0840184612a63565b85830360e0870152612b8c838284612aa8565b9695505050505050565b6020815260006108d36020830184612ad1565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612c056060830185612ad1565b90506108d3602083018480516001600160a01b03168252602090810151910152565b60005b83811015612c42578181015183820152602001612c2a565b50506000910152565b60008151808452612c63816020860160208601612c27565b601f01601f19169290920160200192915050565b6020815260006108d36020830184612c4b565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060f5761060f612d23565b634e487b7160e01b600052603260045260246000fd5b600060018201612d7457612d74612d23565b5060010190565b600060408284031215612d8d57600080fd5b6108d3838361270e565b80516104fe81612282565b600082601f830112612db357600080fd5b8151612dc161278d826127e0565b818152846020838601011115612dd657600080fd5b612101826020830160208701612c27565b805180151581146104fe57600080fd5b60008060408385031215612e0a57600080fd5b82516001600160401b0380821115612e2157600080fd5b9084019060608287031215612e3557600080fd5b604051606081018181108382111715612e5057612e5061265b565b604052825181526020830151612e6581612282565b6020820152604083015182811115612e7c57600080fd5b612e8888828601612da2565b6040830152509350612e9f91505060208401612de7565b90509250929050565b600082601f830112612eb957600080fd5b81516020612ec961278d83612749565b82815260059290921b84018101918181019086841115612ee857600080fd5b8286015b848110156127d5578051612eff81612282565b8352918301918301612eec565b600082601f830112612f1d57600080fd5b81516020612f2d61278d83612749565b82815260069290921b84018101918181019086841115612f4c57600080fd5b8286015b848110156127d55760408189031215612f695760008081fd5b612f71612671565b8151815284820151612f8281612282565b81860152835291830191604001612f50565b600060208284031215612fa657600080fd5b81516001600160401b0380821115612fbd57600080fd5b908301906101008286031215612fd257600080fd5b612fda6126bb565b82518152612fea60208401612d97565b60208201526040830151604082015261300560608401612d97565b60608201526080830151608082015260a08301518281111561302657600080fd5b61303287828601612ea8565b60a08301525060c08301518281111561304a57600080fd5b61305687828601612f0c565b60c08301525060e08301518281111561306e57600080fd5b61307a87828601612da2565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129c75781516001600160a01b03168752958201959082019060010161309d565b600081518084526020808501945080840160005b838110156129c7576130fc878351805182526020908101516001600160a01b0316910152565b60409690960195908201906001016130d6565b60006101008251845260018060a01b03602084015116602085015260408301516040850152606083015161314e60608601826001600160a01b03169052565b506080830151608085015260a08301518160a086015261317082860182613089565b91505060c083015184820360c086015261318a82826130c2565b91505060e083015184820360e0860152611ac78282612c4b565b6001600160a01b03831681526040602082018190526000906121019083018461310f565b6000808335601e198436030181126131df57600080fd5b8301803591506001600160401b038211156131f957600080fd5b60200191503681900382131561247357600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612b8c9083018486612aa8565b8181038181111561060f5761060f612d23565b6020815260006108d3602083018461310f565b606081526000612c05606083018561310f565b81516001600160a01b03168152602080830151908201526040810161060f565b8381526001600160a01b0383166020820152606060408201819052600090611ac790830184612c4b565b6000602082840312156132ce57600080fd5b6108d382612de7565b600082516132e9818460208701612c27565b919091019291505056fea2646970667358221220458edf9dc316caebf920004c78844aef89519625cd80787836785b81bfc220a764736f6c634300081200331ba03333333333333333333333333333333333333333333333333333333333333333a03333333333333333333333333333333333333333333333333333333333333333 +0xf9303580860246139ca800833d09008080b92fe16080604052348015600e575f80fd5b5060015f8190558055612fbd806100245f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c8063a8898181116100bf578063df20e8bc11610079578063df20e8bc14610331578063e69d606a14610344578063e6e67bd5146103ab578063ebc3b1ba146103e6578063ecc7042814610409578063fc2d619714610412575f80fd5b8063a8898181146102a9578063a9a85614146102bc578063b771b3bc146102cf578063c473eef8146102dd578063ccb5f80914610315578063d127dc9b14610328575f80fd5b8063399b77da11610110578063399b77da1461021257806362448850146102315780638245a1b014610244578063860a3b0614610257578063892bf412146102765780638ac0fd0414610296575f80fd5b80630af5b4ff1461014c57806322296c3a146101675780632bc8b0bf1461017c5780632ca40f551461018f5780632e27c223146101e7575b5f80fd5b610154610425565b6040519081526020015b60405180910390f35b61017a610175366004612014565b6104f3565b005b61015461018a36600461202f565b6105e6565b6101d961019d36600461202f565b600560209081525f9182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161015e929190612046565b6101fa6101f536600461202f565b610602565b6040516001600160a01b03909116815260200161015e565b61015461022036600461202f565b5f9081526005602052604090205490565b61015461023f36600461206d565b610689565b61017a6102523660046120ba565b6106e2565b61015461026536600461202f565b60066020525f908152604090205481565b6102896102843660046120eb565b610885565b60405161015e919061210b565b61017a6102a436600461212b565b6108b6565b6101546102b7366004612160565b610aed565b6101546102ca3660046121d0565b610b2f565b6101fa6005600160991b0181565b6101546102eb366004612261565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b61017a610323366004612298565b610dc1565b61015460025481565b61015461033f36600461202f565b6111e3565b61038c61035236600461202f565b5f90815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b03909316835260208301919091520161015e565b6103d16103b936600461202f565b60046020525f90815260409020805460019091015482565b6040805192835260208301919091520161015e565b6103f96103f436600461202f565b61122a565b604051901515815260200161015e565b61015460035481565b61017a6104203660046122bc565b61123f565b6002545f90806104ee576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049691906122ff565b9050806104be5760405162461bcd60e51b81526004016104b590612316565b60405180910390fd5b600281905560405181907f1eac640109dc937d2a9f42735a05f794b39a5e3759d681951d671aabbce4b104905f90a25b919050565b335f9081526009602090815260408083206001600160a01b0385168452909152902054806105745760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084016104b5565b335f8181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105e26001600160a01b0383163383611494565b5050565b5f8181526004602052604081206105fc906114f8565b92915050565b5f8181526007602052604081205461066e5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b60648201526084016104b5565b505f908152600860205260409020546001600160a01b031690565b5f60015f54146106ab5760405162461bcd60e51b81526004016104b59061235d565b60025f556106d86106bb836125b6565b83355f9081526004602052604090206106d39061150a565b611604565b60015f5592915050565b60015f54146107035760405162461bcd60e51b81526004016104b59061235d565b60025f818155905461071b9060408401358435610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107825760405162461bcd60e51b81526004016104b590612655565b5f8360405160200161079491906128de565b60408051601f19818403018152919052825181516020830120919250146107cd5760405162461bcd60e51b81526004016104b5906128f0565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8868560200151604051610808929190612939565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061083a9084906004016129ba565b6020604051808303815f875af1158015610856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087a91906122ff565b505060015f55505050565b604080518082019091525f80825260208201525f8381526004602052604090206108af9083611837565b9392505050565b60015f54146108d75760405162461bcd60e51b81526004016104b59061235d565b60025f5560018054146108fc5760405162461bcd60e51b81526004016104b5906129cc565b6002600155806109665760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b60648201526084016104b5565b6001600160a01b03821661098c5760405162461bcd60e51b81526004016104b590612a11565b5f838152600560205260409020546109b65760405162461bcd60e51b81526004016104b590612655565b5f838152600560205260409020600101546001600160a01b03838116911614610a475760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e7472616374206164647265737300000000000000000060648201526084016104b5565b5f610a5283836118f8565b5f85815260056020526040812060020180549293508392909190610a77908490612a79565b90915550505f8481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610ad8916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060018080555f555050565b6040805130602082015290810184905260608101839052608081018290525f9060a0016040516020818303038152906040528051906020012090509392505050565b5f60015f5414610b515760405162461bcd60e51b81526004016104b59061235d565b60025f818155905490866001600160401b03811115610b7257610b726123a0565b604051908082528060200260200182016040528015610bb657816020015b604080518082019091525f8082526020820152815260200190600190039081610b905790505b509050865f5b81811015610d2e575f8a8a83818110610bd757610bd7612a8c565b9050602002013590505f60075f8381526020019081526020015f20549050805f03610c535760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b60648201526084016104b5565b610c5e8d8783610aed565b8214610cd25760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d20736f7572636520626c6f636b636861696e00000000000060648201526084016104b5565b5f828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528651909190879086908110610d1557610d15612a8c565b6020026020010181905250505050806001019050610bbc565b506040805160c0810182528b81525f6020820152610daf918101610d57368b90038b018b612aa0565b81526020015f81526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509385525050604080519283526020808401909152909201525083611604565b60015f559a9950505050505050505050565b6001805414610de25760405162461bcd60e51b81526004016104b5906129cc565b60026001556040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e579190810190612b07565b9150915080610eba5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016104b5565b60208201516001600160a01b03163014610f315760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016104b5565b5f8260400151806020019051810190610f4a9190612c83565b90505f610f55610425565b905080826040015114610fc45760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b60648201526084016104b5565b835182515f91610fd5918490610aed565b5f81815260076020526040902054909150156110495760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b60648201526084016104b5565b611057338460a00151611a5a565b6110b55760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b60648201526084016104b5565b6110c281845f0151611ac6565b6001600160a01b038616156110f8575f81815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c0830151515f5b8181101561113b5761113384885f01518760c00151848151811061112657611126612a8c565b6020026020010151611b36565b600101611100565b50604080518082018252855181526001600160a01b03891660208083019190915288515f90815260049091529190912061117491611c5a565b336001600160a01b0316865f0151837f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348a886040516111b4929190612e89565b60405180910390a460e084015151156111d5576111d582875f015186611cb4565b505060018055505050505050565b6002545f90806112055760405162461bcd60e51b81526004016104b590612316565b5f60035460016112159190612a79565b9050611222828583610aed565b949350505050565b5f8181526007602052604081205415156105fc565b60018054146112605760405162461bcd60e51b81526004016104b5906129cc565b60026001819055545f906112779084908435610aed565b5f81815260066020526040902054909150806112a55760405162461bcd60e51b81526004016104b590612655565b80836040516020016112b791906128de565b60405160208183030381529060405280519060200120146112ea5760405162461bcd60e51b81526004016104b5906128f0565b5f6112fb6080850160608601612014565b6001600160a01b03163b1161136f5760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b60648201526084016104b5565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35f82815260066020908152604080832083905586916113be918701908701612014565b6113cb60e0870187612eac565b6040516024016113de9493929190612eee565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905290505f61142561141e6080870160608801612014565b5a84611de3565b9050806114885760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b60648201526084016104b5565b50506001805550505050565b6040516001600160a01b038381166024830152604482018390526114f391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611dfa565b505050565b805460018201545f916105fc91612f18565b60605f611520600561151b856114f8565b611e6c565b9050805f0361156c57604080515f8082526020820190925290611564565b604080518082019091525f808252602082015281526020019060019003908161153e5790505b509392505050565b5f816001600160401b03811115611585576115856123a0565b6040519080825280602002602001820160405280156115c957816020015b604080518082019091525f80825260208201528152602001906001900390816115a35790505b5090505f5b82811015611564576115df85611e7b565b8282815181106115f1576115f1612a8c565b60209081029190910101526001016115ce565b5f8061160e610425565b90505f60035f815461161f90612f2b565b91905081905590505f61163683875f015184610aed565b90505f604051806101000160405280848152602001336001600160a01b03168152602001885f0151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090505f816040516020016116ac9190612f43565b60405160208183030381529060405290505f808960400151602001511115611713576040890151516001600160a01b03166116f95760405162461bcd60e51b81526004016104b590612a11565b6040890151805160209091015161171091906118f8565b90505b6040805180820182528a820151516001600160a01b03908116825260208083018590528351808501855286518783012081528082018481525f8a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117b69088908690612f55565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb906117e89086906004016129ba565b6020604051808303815f875af1158015611804573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182891906122ff565b50939998505050505050505050565b604080518082019091525f8082526020820152611853836114f8565b82106118ab5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b60648201526084016104b5565b826002015f83855f01546118bf9190612a79565b815260208082019290925260409081015f20815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa15801561193e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061196291906122ff565b90506119796001600160a01b038516333086611f45565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e191906122ff565b9050818111611a475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016104b5565b611a518282612f18565b95945050505050565b5f81515f03611a6b575060016105fc565b81515f5b81811015611abc57846001600160a01b0316848281518110611a9357611a93612a8c565b60200260200101516001600160a01b031603611ab4576001925050506105fc565b600101611a6f565b505f949350505050565b805f03611b255760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b60648201526084016104b5565b5f9182526007602052604090912055565b5f611b458484845f0151610aed565b5f818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611b9b575050505050565b5f8281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c01908490612a79565b9250508190555082602001516001600160a01b031684837fd13a7935f29af029349bed0a2097455b91fd06190a30478c575db3f31e00bf578460200151604051611c4b9190612f67565b60405180910390a45050505050565b600182018054829160028501915f9182611c7383612f2b565b9091555081526020808201929092526040015f2082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d165760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b60648201526084016104b5565b80606001516001600160a01b03163b5f03611d36576114f3838383611f7e565b602081015160e08201516040515f92611d53928692602401612f87565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b179052606083015160808401519192505f91611d97919084611de3565b905080611db057611da9858585611f7e565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c905f90a35050505050565b5f805f808451602086015f8989f195945050505050565b5f8060205f8451602086015f885af180611e19576040513d5f823e3d81fd5b50505f513d91508115611e30578060011415611e3d565b6001600160a01b0384163b155b15611e6657604051635274afe760e01b81526001600160a01b03851660048201526024016104b5565b50505050565b5f8282188284100282186108af565b604080518082019091525f808252602082015281546001830154819003611ee45760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d7074792071756575650000000000000060448201526064016104b5565b5f8181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b0319909216905590611f3b908390612a79565b9093555090919050565b6040516001600160a01b038481166024830152838116604483015260648201839052611e669186918216906323b872dd906084016114c1565b80604051602001611f8f9190612f43565b60408051601f1981840301815282825280516020918201205f878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590611fe5908590612f43565b60405180910390a3505050565b6001600160a01b0381168114612006575f80fd5b50565b80356104ee81611ff2565b5f60208284031215612024575f80fd5b81356108af81611ff2565b5f6020828403121561203f575f80fd5b5035919050565b828152606081016108af602083018480516001600160a01b03168252602090810151910152565b5f6020828403121561207d575f80fd5b81356001600160401b03811115612092575f80fd5b820160e081850312156108af575f80fd5b5f61010082840312156120b4575f80fd5b50919050565b5f602082840312156120ca575f80fd5b81356001600160401b038111156120df575f80fd5b611222848285016120a3565b5f80604083850312156120fc575f80fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105fc565b5f805f6060848603121561213d575f80fd5b83359250602084013561214f81611ff2565b929592945050506040919091013590565b5f805f60608486031215612172575f80fd5b505081359360208301359350604090920135919050565b5f8083601f840112612199575f80fd5b5081356001600160401b038111156121af575f80fd5b6020830191508360208260051b85010111156121c9575f80fd5b9250929050565b5f805f805f8086880360a08112156121e6575f80fd5b8735965060208801356001600160401b0380821115612203575f80fd5b61220f8b838c01612189565b90985096508691506040603f1984011215612228575f80fd5b60408a01955060808a0135925080831115612241575f80fd5b505061224f89828a01612189565b979a9699509497509295939492505050565b5f8060408385031215612272575f80fd5b823561227d81611ff2565b9150602083013561228d81611ff2565b809150509250929050565b5f80604083850312156122a9575f80fd5b823563ffffffff8116811461227d575f80fd5b5f80604083850312156122cd575f80fd5b8235915060208301356001600160401b038111156122e9575f80fd5b6122f5858286016120a3565b9150509250929050565b5f6020828403121561230f575f80fd5b5051919050565b60208082526027908201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636040820152661a185a5b88125160ca1b606082015260800190565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156123d6576123d66123a0565b60405290565b60405160c081016001600160401b03811182821017156123d6576123d66123a0565b604051606081016001600160401b03811182821017156123d6576123d66123a0565b60405161010081016001600160401b03811182821017156123d6576123d66123a0565b604051601f8201601f191681016001600160401b038111828210171561246b5761246b6123a0565b604052919050565b5f60408284031215612483575f80fd5b61248b6123b4565b9050813561249881611ff2565b808252506020820135602082015292915050565b5f6001600160401b038211156124c4576124c46123a0565b5060051b60200190565b5f82601f8301126124dd575f80fd5b813560206124f26124ed836124ac565b612443565b8083825260208201915060208460051b870101935086841115612513575f80fd5b602086015b8481101561253857803561252b81611ff2565b8352918301918301612518565b509695505050505050565b5f6001600160401b0382111561255b5761255b6123a0565b50601f01601f191660200190565b5f82601f830112612578575f80fd5b81356125866124ed82612543565b81815284602083860101111561259a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082360312156125c6575f80fd5b6125ce6123dc565b823581526125de60208401612009565b60208201526125f03660408501612473565b60408201526080830135606082015260a08301356001600160401b0380821115612618575f80fd5b612624368387016124ce565b608084015260c085013591508082111561263c575f80fd5b5061264936828601612569565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b5f808335601e198436030181126126b0575f80fd5b83016020810192503590506001600160401b038111156126ce575f80fd5b8060051b36038213156121c9575f80fd5b8183525f60208085019450825f5b8581101561271b57813561270081611ff2565b6001600160a01b0316875295820195908201906001016126ed565b509495945050505050565b5f808335601e1984360301811261273b575f80fd5b83016020810192503590506001600160401b03811115612759575f80fd5b8060061b36038213156121c9575f80fd5b8183525f60208085019450825f5b8581101561271b57813587528282013561279181611ff2565b6001600160a01b0316878401526040968701969190910190600101612778565b5f808335601e198436030181126127c6575f80fd5b83016020810192503590506001600160401b038111156127e4575f80fd5b8036038213156121c9575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61010082358452602083013561283081611ff2565b6001600160a01b031660208501526040838101359085015261285460608401612009565b6001600160a01b031660608501526080838101359085015261287960a084018461269b565b8260a087015261288c83870182846126df565b9250505061289d60c0840184612726565b85830360c08701526128b083828461276a565b925050506128c160e08401846127b1565b85830360e08701526128d48382846127f2565b9695505050505050565b602081525f6108af602083018461281a565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081525f61294b606083018561281a565b90506108af602083018480516001600160a01b03168252602090810151910152565b5f5b8381101561298757818101518382015260200161296f565b50505f910152565b5f81518084526129a681602086016020860161296d565b601f01601f19169290920160200192915050565b602081525f6108af602083018461298f565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105fc576105fc612a65565b634e487b7160e01b5f52603260045260245ffd5b5f60408284031215612ab0575f80fd5b6108af8383612473565b80516104ee81611ff2565b5f82601f830112612ad4575f80fd5b8151612ae26124ed82612543565b818152846020838601011115612af6575f80fd5b61122282602083016020870161296d565b5f8060408385031215612b18575f80fd5b82516001600160401b0380821115612b2e575f80fd5b9084019060608287031215612b41575f80fd5b612b496123fe565b825181526020830151612b5b81611ff2565b6020820152604083015182811115612b71575f80fd5b612b7d88828601612ac5565b6040830152508094505050506020830151801515811461228d575f80fd5b5f82601f830112612baa575f80fd5b81516020612bba6124ed836124ac565b8083825260208201915060208460051b870101935086841115612bdb575f80fd5b602086015b84811015612538578051612bf381611ff2565b8352918301918301612be0565b5f82601f830112612c0f575f80fd5b81516020612c1f6124ed836124ac565b82815260069290921b84018101918181019086841115612c3d575f80fd5b8286015b848110156125385760408189031215612c58575f80fd5b612c606123b4565b8151815284820151612c7181611ff2565b81860152835291830191604001612c41565b5f60208284031215612c93575f80fd5b81516001600160401b0380821115612ca9575f80fd5b908301906101008286031215612cbd575f80fd5b612cc5612420565b82518152612cd560208401612aba565b602082015260408301516040820152612cf060608401612aba565b60608201526080830151608082015260a083015182811115612d10575f80fd5b612d1c87828601612b9b565b60a08301525060c083015182811115612d33575f80fd5b612d3f87828601612c00565b60c08301525060e083015182811115612d56575f80fd5b612d6287828601612ac5565b60e08301525095945050505050565b5f815180845260208085019450602084015f5b8381101561271b5781516001600160a01b031687529582019590820190600101612d84565b5f815180845260208085019450602084015f5b8381101561271b57612de2878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612dbc565b5f6101008251845260018060a01b036020840151166020850152604083015160408501526060830151612e3360608601826001600160a01b03169052565b506080830151608085015260a08301518160a0860152612e5582860182612d71565b91505060c083015184820360c0860152612e6f8282612da9565b91505060e083015184820360e0860152611a51828261298f565b6001600160a01b03831681526040602082018190525f9061122290830184612df5565b5f808335601e19843603018112612ec1575f80fd5b8301803591506001600160401b03821115612eda575f80fd5b6020019150368190038213156121c9575f80fd5b8481526001600160a01b03841660208201526060604082018190525f906128d490830184866127f2565b818103818111156105fc576105fc612a65565b5f60018201612f3c57612f3c612a65565b5060010190565b602081525f6108af6020830184612df5565b606081525f61294b6060830185612df5565b81516001600160a01b0316815260208083015190820152604081016105fc565b8381526001600160a01b03831660208201526060604082018190525f90611a519083018461298f56fea164736f6c6343000819000a1ba03333333333333333333333333333333333333333333333333333333333333333a03333333333333333333333333333333333333333333333333333333333333333 \ No newline at end of file diff --git a/tests/utils/UniversalTeleporterMessengerContractAddress.txt b/tests/utils/UniversalTeleporterMessengerContractAddress.txt index 8e845046..007a908f 100755 --- a/tests/utils/UniversalTeleporterMessengerContractAddress.txt +++ b/tests/utils/UniversalTeleporterMessengerContractAddress.txt @@ -1 +1 @@ -0xDc65BB82E60F5096BDD267b20d236DbA804C8b2E +0x68D42653C8455969EDae4F89281f4b9Ed3E9080d \ No newline at end of file diff --git a/tests/utils/utils.go b/tests/utils/utils.go index 48500c14..df6345a2 100644 --- a/tests/utils/utils.go +++ b/tests/utils/utils.go @@ -17,8 +17,6 @@ import ( "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/utils/logging" - avalancheWarp "github.com/ava-labs/avalanchego/vms/platformvm/warp" - warpPayload "github.com/ava-labs/avalanchego/vms/platformvm/warp/payload" "github.com/ava-labs/awm-relayer/config" offchainregistry "github.com/ava-labs/awm-relayer/messages/off-chain-registry" relayercfg "github.com/ava-labs/awm-relayer/relayer/config" @@ -27,14 +25,10 @@ import ( relayerUtils "github.com/ava-labs/awm-relayer/utils" "github.com/ava-labs/subnet-evm/accounts/abi/bind" "github.com/ava-labs/subnet-evm/core/types" - "github.com/ava-labs/subnet-evm/precompile/contracts/warp" - predicateutils "github.com/ava-labs/subnet-evm/predicate" - subnetevmutils "github.com/ava-labs/subnet-evm/utils" teleportermessenger "github.com/ava-labs/teleporter/abi-bindings/go/teleporter/TeleporterMessenger" "github.com/ava-labs/teleporter/tests/interfaces" "github.com/ava-labs/teleporter/tests/utils" teleporterTestUtils "github.com/ava-labs/teleporter/tests/utils" - teleporterUtils "github.com/ava-labs/teleporter/utils/teleporter-utils" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/log" @@ -416,7 +410,7 @@ func RelayBasicMessage( Expect(err).Should(BeNil()) defer sub.Unsubscribe() - _, teleporterMessage, teleporterMessageID := SendBasicTeleporterMessage( + _, _, teleporterMessageID := SendBasicTeleporterMessage( ctx, source, destination, @@ -424,81 +418,9 @@ func RelayBasicMessage( destinationAddress, ) - log.Info("Waiting for new block confirmation") - newHead := <-newHeadsDest - blockNumber := newHead.Number - log.Info( - "Received new head", - "height", blockNumber.Uint64(), - "hash", newHead.Hash(), - ) - block, err := destination.RPCClient.BlockByNumber(ctx, blockNumber) - Expect(err).Should(BeNil()) - log.Info( - "Got block", - "blockHash", block.Hash(), - "blockNumber", block.NumberU64(), - "transactions", block.Transactions(), - "numTransactions", len(block.Transactions()), - "block", block, - ) - accessLists := block.Transactions()[0].AccessList() - Expect(len(accessLists)).Should(Equal(1)) - Expect(accessLists[0].Address).Should(Equal(warp.Module.Address)) - - // Check the transaction storage key has warp message we're expecting - storageKeyHashes := accessLists[0].StorageKeys - packedPredicate := subnetevmutils.HashSliceToBytes(storageKeyHashes) - predicateBytes, err := predicateutils.UnpackPredicate(packedPredicate) - Expect(err).Should(BeNil()) - receivedWarpMessage, err := avalancheWarp.ParseMessage(predicateBytes) - Expect(err).Should(BeNil()) - - // Check that the transaction has successful receipt status - txHash := block.Transactions()[0].Hash() - receipt, err := destination.RPCClient.TransactionReceipt(ctx, txHash) - Expect(err).Should(BeNil()) - Expect(receipt.Status).Should(Equal(types.ReceiptStatusSuccessful)) - - // Check that the transaction emits ReceiveCrossChainMessage - receiveEvent, err := teleporterTestUtils.GetEventFromLogs( - receipt.Logs, - destination.TeleporterMessenger.ParseReceiveCrossChainMessage, - ) - Expect(err).Should(BeNil()) - Expect(receiveEvent.SourceBlockchainID[:]).Should(Equal(source.BlockchainID[:])) - Expect(receiveEvent.MessageID[:]).Should(Equal(teleporterMessageID[:])) - - // - // Validate Received Warp Message Values - // - log.Info("Validating received warp message") - Expect(receivedWarpMessage.SourceChainID).Should(Equal(source.BlockchainID)) - addressedPayload, err := warpPayload.ParseAddressedCall(receivedWarpMessage.Payload) - Expect(err).Should(BeNil()) - - // Check that the teleporter message is correct - // We don't validate the entire message, since the message receipts - // are populated by the Teleporter contract - var receivedTeleporterMessage teleportermessenger.TeleporterMessage - err = receivedTeleporterMessage.Unpack(addressedPayload.Payload) + log.Info("Waiting for Teleporter message delivery") + err = utils.WaitTeleporterMessageDelivered(ctx, destination.TeleporterMessenger, teleporterMessageID) Expect(err).Should(BeNil()) - - receivedMessageID, err := teleporterUtils.CalculateMessageID( - teleporterContractAddress, - source.BlockchainID, - destination.BlockchainID, - teleporterMessage.MessageNonce, - ) - Expect(err).Should(BeNil()) - Expect(receivedMessageID).Should(Equal(teleporterMessageID)) - Expect(receivedTeleporterMessage.OriginSenderAddress).Should(Equal(teleporterMessage.OriginSenderAddress)) - receivedDestinationID, err := ids.ToID(receivedTeleporterMessage.DestinationBlockchainID[:]) - Expect(err).Should(BeNil()) - Expect(receivedDestinationID).Should(Equal(destination.BlockchainID)) - Expect(receivedTeleporterMessage.DestinationAddress).Should(Equal(teleporterMessage.DestinationAddress)) - Expect(receivedTeleporterMessage.RequiredGasLimit.Uint64()).Should(Equal(teleporterMessage.RequiredGasLimit.Uint64())) - Expect(receivedTeleporterMessage.Message).Should(Equal(teleporterMessage.Message)) } func WriteRelayerConfig(relayerConfig relayercfg.Config, fname string) string { @@ -572,8 +494,11 @@ func TriggerProcessMissedBlocks( log.Info("Starting the relayer") relayerCleanup := BuildAndRunRelayerExecutable(ctx, relayerConfigPath) defer relayerCleanup() - log.Info("Waiting for a new block confirmation on the destination") - <-newHeads + + log.Info("Waiting for Teleporter message delivery") + err = utils.WaitTeleporterMessageDelivered(ctx, destinationSubnetInfo.TeleporterMessenger, id3) + Expect(err).Should(BeNil()) + delivered1, err := destinationSubnetInfo.TeleporterMessenger.MessageReceived( &bind.CallOpts{}, id1, ) diff --git a/tests/utils/warp-genesis-template.json b/tests/utils/warp-genesis-template.json index ce7637fd..44dd8b5d 100644 --- a/tests/utils/warp-genesis-template.json +++ b/tests/utils/warp-genesis-template.json @@ -1,43 +1,57 @@ { "config": { - "chainId": , - "homesteadBlock": 0, - "eip150Block": 0, - "eip150Hash": "0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0", - "eip155Block": 0, - "eip158Block": 0, - "byzantiumBlock": 0, - "constantinopleBlock": 0, - "petersburgBlock": 0, - "istanbulBlock": 0, - "muirGlacierBlock": 0, - "feeConfig": { - "gasLimit": 20000000, - "minBaseFee": 1000000000, - "targetGas": 100000000, - "baseFeeChangeDenominator": 48, - "minBlockGasCost": 0, - "maxBlockGasCost": 10000000, - "targetBlockRate": 2, - "blockGasCostStep": 500000 - }, - "warpConfig": { - "blockTimestamp": 1719343601 - } + "chainId": , + "homesteadBlock": 0, + "eip150Block": 0, + "eip150Hash": "0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0", + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "muirGlacierBlock": 0, + "feeConfig": { + "gasLimit": 20000000, + "minBaseFee": 1000000000, + "targetGas": 100000000, + "baseFeeChangeDenominator": 48, + "minBlockGasCost": 0, + "maxBlockGasCost": 10000000, + "targetBlockRate": 2, + "blockGasCostStep": 500000 + }, + "warpConfig": { + "blockTimestamp": 1719343601 + }, + "contractNativeMinterConfig": { + "blockTimestamp": 0, + "adminAddresses": [ + "0xAcB633F5B00099c7ec187eB00156c5cd9D854b5B", + "0x3405506b3711859c5070949ed9b700c7ba7bf750" + ] + } }, "alloc": { - "0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC": { - "balance": "0x52B7D2DCC80CD2E4000000" - }, - "0x0Fa8EA536Be85F32724D57A37758761B86416123": { - "balance": "0x52B7D2DCC80CD2E4000000" - }, - "0x1dD31B5351e76d51F4B152ce64fE5cf594694De5": { - "balance": "0x52B7D2DCC80CD2E4000000" - } + "0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC": { + "balance": "0x52B7D2DCC80CD2E4000000" + }, + "": { + "balance": "0x0", + "code": "", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "nonce": 1 + }, + "": { + "balance": "0x0", + "nonce": 1 + } }, "nonce": "0x0", - "timestamp": "0x0", + "timestamp": "0x667B19F0", "extraData": "0x00", "gasLimit": "0x1312D00", "difficulty": "0x0",