diff --git a/.gitmodules b/.gitmodules index 5e1db562..04a764d3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,7 +5,6 @@ [submodule "lib/common"] path = lib/common url = https://github.com/m0-foundation/common - branch = release-v1.5.0 [submodule "lib/openzeppelin-foundry-upgrades"] path = lib/openzeppelin-foundry-upgrades url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades diff --git a/Makefile b/Makefile index 04c1ea4d..1094e924 100644 --- a/Makefile +++ b/Makefile @@ -91,6 +91,11 @@ deploy-yield-to-one-forced-transfer-citrea: VERIFIER="custom" deploy-yield-to-one-forced-transfer-citrea: VERIFIER_URL=${CITREA_VERIFIER_URL} deploy-yield-to-one-forced-transfer-citrea: deploy-yield-to-one-forced-transfer +deploy-yield-to-one-forced-transfer-moca: RPC_URL=$(MOCA_RPC_URL) +deploy-yield-to-one-forced-transfer-moca: VERIFIER="blockscout" +deploy-yield-to-one-forced-transfer-moca: VERIFIER_URL=${MOCA_VERIFIER_URL} +deploy-yield-to-one-forced-transfer-moca: deploy-yield-to-one-forced-transfer + deploy-yield-to-one-forced-transfer-sepolia: RPC_URL=$(SEPOLIA_RPC_URL) deploy-yield-to-one-forced-transfer-sepolia: VERIFIER="etherscan" deploy-yield-to-one-forced-transfer-sepolia: VERIFIER_URL=${SEPOLIA_VERIFIER_URL} @@ -268,6 +273,11 @@ deploy-swap-facility-sei: VERIFIER="etherscan" deploy-swap-facility-sei: VERIFIER_URL=${SEI_VERIFIER_URL} deploy-swap-facility-sei: deploy-swap-facility +deploy-swap-facility-0g: RPC_URL=$(ZG_RPC_URL) +deploy-swap-facility-0g: VERIFIER="custom" +deploy-swap-facility-0g: VERIFIER_URL=$(ZG_VERIFIER_URL) +deploy-swap-facility-0g: deploy-swap-facility + # # # UPGRADE diff --git a/broadcast/DeploySwapFacility.s.sol/16661/run-1771368196969.json b/broadcast/DeploySwapFacility.s.sol/16661/run-1771368196969.json new file mode 100644 index 00000000..51eba556 --- /dev/null +++ b/broadcast/DeploySwapFacility.s.sol/16661/run-1771368196969.json @@ -0,0 +1,246 @@ +{ + "transactions": [ + { + "hash": "0x06f9479682a5ac09f733046aad68f9ad75988abed8ff6641ced3c914aec778e7", + "transactionType": "CREATE", + "contractName": "SwapFacility", + "contractAddress": "0x23d8162e084aa33d8ef6fcc0ab33f4028a53ee79", + "function": null, + "arguments": [ + "0x866A2BF4E572CbcF37D5071A7a58503Bfb36be1b", + "0x119FbeeDD4F4f4298Fb59B720d5654442b81ae2c" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "gas": "0x453886", + "value": "0x0", + "input": "0x60c060405234801561000f575f80fd5b5060405161401238038061401283398101604081905261002e91610162565b610036610095565b6001600160a01b03821660808190526100625760405163b01d5e2b60e01b815260040160405180910390fd5b6001600160a01b03811660a081905261008e576040516379a6314960e01b815260040160405180910390fd5b5050610193565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101445780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461015d575f80fd5b919050565b5f8060408385031215610173575f80fd5b61017c83610147565b915061018a60208401610147565b90509250929050565b60805160a051613dfc6102165f395f818161039e01528181612756015261282d01525f81816105ff0152818161152f0152818161182d015281816118e901528181611bce015281816120ef0152818161223901528181612282015281816129c301528181612a7c01528181612b2e01528181612dd901526130020152613dfc5ff3fe608060405234801561000f575f80fd5b5060043610610283575f3560e01c8063799c44b211610157578063c64f5351116100d2578063e274ffb811610088578063efb754a81161006e578063efb754a8146106ce578063ff189d1c146106e1578063ff60734c146106f4575f80fd5b8063e274ffb814610694578063e63ab1e9146106a7575f80fd5b8063d737d0c7116100b8578063d737d0c714610647578063d8e211321461066e578063de3d425414610681575f80fd5b8063c64f535114610621578063d547741f14610634575f80fd5b80639e5e91f411610127578063a8ffb8a51161010d578063a8ffb8a514610589578063b63b1648146105b0578063c3b6f939146105fa575f80fd5b80639e5e91f41461056f578063a217fddf14610582575f80fd5b8063799c44b2146104ea5780638456cb59146104fd57806391d14854146105055780639d4d470a1461055c575f80fd5b80632b20e397116102015780635a734520116101b75780635d77e1ca1161019d5780635d77e1ca1461046a57806360657bc61461047d5780636e81221c146104d7575f80fd5b80635a734520146104195780635c975abb14610440575f80fd5b806336568abe116101e757806336568abe146103eb5780633f4ba83a146103fe578063485cc95514610406575f80fd5b80632b20e397146103995780632f2ff15d146103d8575f80fd5b806314217eed11610256578063264e97e01161023c578063264e97e01461036057806329b6eca9146103735780632af4d36e14610386575f80fd5b806314217eed1461030c578063248a9ca31461031f575f80fd5b806301ffc9a71461028757806304db4741146102af5780630a85ce8c146102c4578063135597c3146102f9575b5f80fd5b61029a6102953660046137b7565b610707565b60405190151581526020015b60405180910390f35b6102c26102bd36600461380a565b61079f565b005b6102eb7f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000081565b6040519081526020016102a6565b61029a61030736600461386e565b61089e565b6102c261031a36600461389e565b6108e2565b6102eb61032d36600461391a565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b61029a61036e36600461386e565b610a77565b6102c261038136600461386e565b610a9e565b6102c261039436600461393e565b610bbb565b6103c07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a6565b6102c26103e6366004613975565b610cb6565b6102c26103f9366004613975565b610cff565b6102c2610d4b565b6102c2610414366004613998565b610d80565b6102eb7f6561726e6572730000000000000000000000000000000000000000000000000081565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661029a565b6102c2610478366004613a09565b610ef3565b61029a61048b366004613998565b6001600160a01b039182165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde016020908152604080832093909416825291909152205460ff1690565b6102c26104e5366004613a92565b61106b565b6102c26104f8366004613ae2565b611168565b6102c26112ee565b61029a610513366004613975565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6102c261056a36600461393e565b611320565b6102c261057d366004613b2a565b611448565b6102eb5f81565b6102eb7fafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b4381565b61029a6105be36600461386e565b6001600160a01b03165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602052604090205460ff1690565b6103c07f000000000000000000000000000000000000000000000000000000000000000081565b6102c261062f36600461393e565b61155e565b6102c2610642366004613975565b611673565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6103c0565b61029a61067c366004613b5e565b6116b6565b61029a61068f36600461386e565b611aa9565b6102c26106a2366004613b2a565b611ae8565b6102eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102c26106dc366004613b9b565b611bf5565b61029a6106ef36600461386e565b611d5b565b6102c2610702366004613c36565b611daa565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061079957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615610801576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61080b33610a77565b6108155733610875565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610851573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108759190613cc7565b905061088081611f41565b61088d8686868686611f67565b6108965f611f41565b505050505050565b5f7f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde005b6001600160a01b039092165f90815260209290925250604090205460ff1690565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615610944576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61094e33610a77565b61095857336109b8565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b89190613cc7565b90506109c381611f41565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b038a169063d505accf9060e4015f604051808303815f87803b158015610a45575f80fd5b505af1925050508015610a56575060015b50610a638989898961222f565b610a6c5f611f41565b505050505050505050565b5f7f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a502006108c1565b60025f610aa9612355565b805490915068010000000000000000900460ff1680610ad65750805467ffffffffffffffff808416911610155b15610b0d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001667ffffffffffffffff83161768010000000000000000178155610b538361237d565b80547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610bc5816123f3565b6001600160a01b038316610c05576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811515610c118461089e565b151514610cb1576001600160a01b0383165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde00602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527fa1e65189c2e656be12ff01879244361cbbc5fe8a08224278b332004fe3489f5891015b60405180910390a25b505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cef816123f3565b610cf983836123fd565b50505050565b6001600160a01b0381163314610d41576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb182826124e7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d75816123f3565b610d7d6125a9565b50565b5f610d89612355565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610db55750825b90505f8267ffffffffffffffff166001148015610dd15750303b155b905081158015610ddf575080155b15610e16576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e775784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e8087612639565b610e898661237d565b8315610eea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615610f55576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f5f33610a77565b610f695733610fc9565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc99190613cc7565b9050610fd481611f41565b6040517f9fd5a6cf0000000000000000000000000000000000000000000000000000000081526001600160a01b03891690639fd5a6cf9061102390339030908b908a908a908a90600401613ce2565b5f604051808303815f87803b15801561103a575f80fd5b505af192505050801561104b575060015b506110588888888861222f565b6110615f611f41565b5050505050505050565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156110cd576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110d733610a77565b6110e15733611141565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111419190613cc7565b905061114c81611f41565b6111588585858561222f565b6111615f611f41565b5050505050565b5f611172816123f3565b6001600160a01b0384166111b2576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166111f2576040517f3099ab8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038481165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209387168352929052205460ff16151582151514610cf9576001600160a01b038481165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527fe315f6e65becaee65bf0cbc2a489ea61e16e2ab2845a5aa3ec92420dc284117a91015b60405180910390a350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611318816123f3565b610d7d61268b565b5f61132a816123f3565b6001600160a01b03831661136a576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115156113ad846001600160a01b03165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602052604090205460ff1690565b151514610cb1576001600160a01b0383165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f9d4d0b01aa7e4fe9a02187a57e48faf9eaf09d1a084d3ab7a6ca3cd8f2047c149101610ca8565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156114aa576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114b433610a77565b6114be573361151e565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151e9190613cc7565b905061152981611f41565b611555847f0000000000000000000000000000000000000000000000000000000000000000858561222f565b610cf95f611f41565b5f611568816123f3565b6001600160a01b0383166115a8576040517f920d929200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f9081527f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a50200602081905260409091205483151560ff9091161515036115f75750505050565b6001600160a01b0384165f818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527ff03b9904b8234e041267377d7a55ddb345d1ee737d0116a2e621e3a5fad07a7d910160405180910390a250505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546116ac816123f3565b610cf983836124e7565b5f80806001600160a01b0385163b15806116d857506001600160a01b0384163b155b156116e7575f92505050611aa2565b846001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561175f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261175c91810190613d5c565b60015b156117675791505b836001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117dc91810190613d5c565b60015b156117e75790505b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16806118145750815b8061181c5750805b1561182b575f92505050611aa2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036118e75761186d84611d5b565b61187b575f92505050611aa2565b6118848461089e565b6118965761189186611aa9565b6118de565b6001600160a01b038085165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde0160209081526040808320938a168352929052205460ff165b92505050611aa2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036119995761192985611d5b565b611937575f92505050611aa2565b6119408561089e565b61194d5761189186611aa9565b6001600160a01b038086165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde0160209081526040808320938a168352929052205460ff166118de565b5f6119a385611d5b565b90506119ae86611d5b565b80156119b75750805b156119e2576119c58661089e565b1580156119d857506119d68561089e565b155b9350505050611aa2565b8015611a9b576040517fc537bed00000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286169063c537bed090602401602060405180830381865afa925050508015611a81575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a7e91810190613d5c565b60015b611a90575f9350505050611aa2565b9350611aa292505050565b5f93505050505b9392505050565b6001600160a01b0381165f9081527f6b691b2d012e26a1efd9948ce05990847eae29d1cebd577c171024c61e06d6eb602052604081205460ff16610799565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611b4a576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611b5433610a77565b611b5e5733611bbe565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbe9190613cc7565b9050611bc981611f41565b6115557f000000000000000000000000000000000000000000000000000000000000000085858561222f565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611c57576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611c6133610a77565b611c6b5733611ccb565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ccb9190613cc7565b9050611cd681611f41565b6040517f9fd5a6cf0000000000000000000000000000000000000000000000000000000081526001600160a01b03891690639fd5a6cf90611d2590339030908b908a908a908a90600401613ce2565b5f604051808303815f87803b158015611d3c575f80fd5b505af1925050508015611d4d575060015b50610a638989898989611f67565b5f611d6582612704565b8061079957506001600160a01b0382165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602052604090205460ff16610799565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611e0c576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611e1633610a77565b611e205733611e80565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e809190613cc7565b9050611e8b81611f41565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b038a169063d505accf9060e4015f604051808303815f87803b158015611f0d575f80fd5b505af1925050508015611f1e575060015b50611f2c8a8a8a8a8a611f67565b611f355f611f41565b50505050505050505050565b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b611f6f612896565b611f78846128f4565b611f81836128f4565b611f8a8461293e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015611ff3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120179190613d5c565b505f61202230612989565b6040517f39f47693000000000000000000000000000000000000000000000000000000008152306004820152602481018590529091506001600160a01b038616906339f47693906044015f604051808303815f87803b158015612083575f80fd5b505af1158015612095573d5f803e3d5ffd5b50505050806120a330612989565b6120ad9190613d77565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af1158015612137573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215b9190613d5c565b506040517f88a47d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301528381166024830152604482018590528516906388a47d4d906064015f604051808303815f87803b1580156121c4575f80fd5b505af11580156121d6573d5f803e3d5ffd5b50505050836001600160a01b0316866001600160a01b03167f3db36e30094696c050a3ed5c90093ddac4ad15aec17a4869d08b09eb540cf0fe8560405161221f91815260200190565b60405180910390a3505050505050565b612237612896565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036122805761227b838383612a2e565b610cf9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036122c45761227b848383612c61565b5f6122ce84611d5b565b90506122d985611d5b565b80156122e25750805b156122f9576122f385858585612e8b565b50610cf9565b801561230b576122f385858585613143565b6040517f75c4c05a0000000000000000000000000000000000000000000000000000000081526001600160a01b038087166004830152851660248201526044015b60405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610799565b612385613251565b6001600160a01b0381166123c5576040517f042d717b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ef7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a826123fd565b5050565b610d7d813361328f565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166124de575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556124943390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610799565b5f915050610799565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156124de575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610799565b6125b161331b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b612641613251565b6001600160a01b038116612681576040517f7289db0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ef5f826123fd565b612693612896565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361261b565b6040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081527f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000060048201525f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac090602401602060405180830381865afa1580156127a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c79190613daf565b14158061079957506040517fd7d1c1c00000000000000000000000000000000000000000000000000000000081527f6561726e6572730000000000000000000000000000000000000000000000000060048201526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d7d1c1c090604401602060405180830381865afa158015612872573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190613d5c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156128f2576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6128fd81611d5b565b610d7d576040517f2d32af600000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161234c565b6129478161089e565b15610d7d576040517f0bc7a0d00000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161234c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612a0a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190613daf565b612a37836128f4565b612a418333613376565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303815f875af1158015612aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aee9190613d5c565b506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015612b74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b989190613d5c565b506040517fbf376c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526024820184905284169063bf376c7a906044015f604051808303815f87803b158015612bf9575f80fd5b505af1158015612c0b573d5f803e3d5ffd5b50505050806001600160a01b0316836001600160a01b03167fea5845e6161e56b30740f4a743f316fa77bd8f48b1c3ce6eff595ab0385ba74584604051612c5491815260200190565b60405180910390a3505050565b612c6a836128f4565b612c748333613376565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303815f875af1158015612cdd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d019190613d5c565b505f612d0c30612989565b6040517f39f47693000000000000000000000000000000000000000000000000000000008152306004820152602481018590529091506001600160a01b038516906339f47693906044015f604051808303815f87803b158015612d6d575f80fd5b505af1158015612d7f573d5f803e3d5ffd5b5050505080612d8d30612989565b612d979190613d77565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015612e21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e459190613d5c565b50816001600160a01b0316846001600160a01b03167f20715489f1868041ab913834efbaabc996170336daf633a4999d62bd5c162f08856040516112e091815260200190565b612e948461293e565b612e9d8361293e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015612f06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2a9190613d5c565b505f612f3530612989565b6040517f39f47693000000000000000000000000000000000000000000000000000000008152306004820152602481018590529091506001600160a01b038616906339f47693906044015f604051808303815f87803b158015612f96575f80fd5b505af1158015612fa8573d5f803e3d5ffd5b5050505080612fb630612989565b612fc09190613d77565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af115801561304a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306e9190613d5c565b506040517fbf376c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820185905285169063bf376c7a906044015f604051808303815f87803b1580156130cf575f80fd5b505af11580156130e1573d5f803e3d5ffd5b50505050816001600160a01b0316846001600160a01b0316866001600160a01b03167f7621e0d883c1038028d167fa29ecc01dbb8bc0cf673db584432530d693259e518660405161313491815260200190565b60405180910390a45050505050565b61314d8484613466565b6131626001600160a01b038516333085613592565b6131766001600160a01b038516848461360e565b6040517f623556380000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528281166024830152604482018490528416906362355638906064015f604051808303815f87803b1580156131de575f80fd5b505af11580156131f0573d5f803e3d5ffd5b50505050806001600160a01b0316836001600160a01b0316856001600160a01b03167fdd2f3d796c66437c962d6e7f629eda41bbcad4ef9f0725998089509dace104fb8560405161324391815260200190565b60405180910390a450505050565b6132596136cb565b6128f2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166123ef576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161234c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166128f2576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61337f8261089e565b15613414576001600160a01b038083165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209385168352929052205460ff166123ef576040517fe5fae0d00000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301528216602482015260440161234c565b61341d81611aa9565b6123ef576040517f10833dfe0000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301528216602482015260440161234c565b6040517fc537bed00000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015282169063c537bed090602401602060405180830381865afa9250505080156134ff575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526134fc91810190613d5c565b60015b613548576040517f75c4c05a0000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301528216602482015260440161234c565b80610cb1576040517f75c4c05a0000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260440161234c565b6040516001600160a01b038481166024830152838116604483015260648201839052610cf99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136e9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261368d848261376e565b610cf9576040516001600160a01b0384811660248301525f60448301526136c191869182169063095ea7b3906064016135c7565b610cf984826136e9565b5f6136d4612355565b5468010000000000000000900460ff16919050565b5f8060205f8451602086015f885af180613708576040513d5f823e3d81fd5b50505f513d9150811561371f57806001141561372c565b6001600160a01b0384163b155b15610cf9576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161234c565b5f805f8060205f8651602088015f8a5af192503d91505f5190508280156137ad5750811561379f57806001146137ad565b5f866001600160a01b03163b115b9695505050505050565b5f602082840312156137c7575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa2575f80fd5b6001600160a01b0381168114610d7d575f80fd5b5f805f805f60a0868803121561381e575f80fd5b8535613829816137f6565b94506020860135613839816137f6565b93506040860135613849816137f6565b9250606086013591506080860135613860816137f6565b809150509295509295909350565b5f6020828403121561387e575f80fd5b8135611aa2816137f6565b803560ff81168114613899575f80fd5b919050565b5f805f805f805f80610100898b0312156138b6575f80fd5b88356138c1816137f6565b975060208901356138d1816137f6565b96506040890135955060608901356138e8816137f6565b9450608089013593506138fd60a08a01613889565b979a969950949793969295929450505060c08201359160e0013590565b5f6020828403121561392a575f80fd5b5035919050565b8015158114610d7d575f80fd5b5f806040838503121561394f575f80fd5b823561395a816137f6565b9150602083013561396a81613931565b809150509250929050565b5f8060408385031215613986575f80fd5b82359150602083013561396a816137f6565b5f80604083850312156139a9575f80fd5b82356139b4816137f6565b9150602083013561396a816137f6565b5f8083601f8401126139d4575f80fd5b50813567ffffffffffffffff8111156139eb575f80fd5b602083019150836020828501011115613a02575f80fd5b9250929050565b5f805f805f805f60c0888a031215613a1f575f80fd5b8735613a2a816137f6565b96506020880135613a3a816137f6565b9550604088013594506060880135613a51816137f6565b93506080880135925060a088013567ffffffffffffffff811115613a73575f80fd5b613a7f8a828b016139c4565b989b979a50959850939692959293505050565b5f805f8060808587031215613aa5575f80fd5b8435613ab0816137f6565b93506020850135613ac0816137f6565b9250604085013591506060850135613ad7816137f6565b939692955090935050565b5f805f60608486031215613af4575f80fd5b8335613aff816137f6565b92506020840135613b0f816137f6565b91506040840135613b1f81613931565b809150509250925092565b5f805f60608486031215613b3c575f80fd5b8335613b47816137f6565b9250602084013591506040840135613b1f816137f6565b5f805f60608486031215613b70575f80fd5b8335613b7b816137f6565b92506020840135613b8b816137f6565b91506040840135613b1f816137f6565b5f805f805f805f8060e0898b031215613bb2575f80fd5b8835613bbd816137f6565b97506020890135613bcd816137f6565b96506040890135613bdd816137f6565b9550606089013594506080890135613bf4816137f6565b935060a0890135925060c089013567ffffffffffffffff811115613c16575f80fd5b613c228b828c016139c4565b999c989b5096995094979396929594505050565b5f805f805f805f805f6101208a8c031215613c4f575f80fd5b8935613c5a816137f6565b985060208a0135613c6a816137f6565b975060408a0135613c7a816137f6565b965060608a0135955060808a0135613c91816137f6565b945060a08a01359350613ca660c08b01613889565b989b979a50959894979396929550929360e081013593506101000135919050565b5f60208284031215613cd7575f80fd5b8151611aa2816137f6565b6001600160a01b03871681526001600160a01b038616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010195945050505050565b5f60208284031215613d6c575f80fd5b8151611aa281613931565b81810381811115610799577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215613dbf575f80fd5b505191905056fea2646970667358221220e5a93b6c7388be933b65bbbab5b03cd4e503f58c5848889d8341a7d1838c3b0864736f6c634300081a0033000000000000000000000000866a2bf4e572cbcf37d5071a7a58503bfb36be1b000000000000000000000000119fbeedd4f4f4298fb59b720d5654442b81ae2c", + "nonce": "0x29", + "chainId": "0x4115" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "function": "deployCreate3(bytes32,bytes)", + "arguments": [ + "0xf2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde", + "0x60a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212207e1ef283990bacfd0457406f3c52502f82b308cf9514d1d060f90256de40752764736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef0338100000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "gas": "0x14c100", + "value": "0x0", + "input": "0x9c36a286f2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000011a760a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212207e1ef283990bacfd0457406f3c52502f82b308cf9514d1d060f90256de40752764736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef033810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2a", + "chainId": "0x4115" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "contractName": null, + "address": "0x38862ac81f9ed0c39ca733bd0224b34885f40f10", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "initCode": "0x60a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212207e1ef283990bacfd0457406f3c52502f82b308cf9514d1d060f90256de40752764736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef0338100000000000000000000000000000000000000000000000000000000" + }, + { + "transactionType": "CREATE", + "contractName": "ProxyAdmin", + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "initCode": "0x608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x37606b", + "logs": [ + { + "address": "0x23d8162e084aa33d8ef6fcc0ab33f4028a53ee79", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xd34819c5be008128bd2f9615b71c720f4944b97988a0ae315358f5b8145654d4", + "blockNumber": "0x17ded46", + "blockTimestamp": "0x0", + "transactionHash": "0x06f9479682a5ac09f733046aad68f9ad75988abed8ff6641ced3c914aec778e7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000200000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x06f9479682a5ac09f733046aad68f9ad75988abed8ff6641ced3c914aec778e7", + "transactionIndex": "0x0", + "blockHash": "0xd34819c5be008128bd2f9615b71c720f4944b97988a0ae315358f5b8145654d4", + "blockNumber": "0x17ded46", + "gasUsed": "0x37606b", + "effectiveGasPrice": "0x11e1a3008", + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": null, + "contractAddress": "0x23d8162e084aa33d8ef6fcc0ab33f4028a53ee79" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x109a66", + "logs": [ + { + "address": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "topics": [ + "0x2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c9067", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10", + "0x71cf965fb04bcfeb2ee0ec3b03e0aaaeb87ea1d4bb55d5ad209603cfa3bf0d2c" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "0x000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef03381", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f38d8a5583f9316084e9c40737244870c565924", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511", + "0x000000000000000000000000b6807116b3b1b321a390594e31ecd6e0076f6278" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x7", + "removed": false + } + ], + "logsBloom": "0x00020004000000000000000000000000400000000000000400800000240000010000000000000000000000000000200000000000002804100000000000000000002000000000000000000000020012010001000000000000040000100000000000000000020000000000000000000800000020800020000000000000000100400000000000000001040800000000008000000000000080400000004000800000000000000000000000000000000000000000000001800000001400000000000000000020000000000200000020000000000000002404000100002000000020000000800000000210000000000000000000000480000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "gasUsed": "0x109a66", + "effectiveGasPrice": "0x11e1a3008", + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1771368196969, + "chain": 16661, + "commit": "503c8bb" +} diff --git a/broadcast/DeploySwapFacility.s.sol/16661/run-latest.json b/broadcast/DeploySwapFacility.s.sol/16661/run-latest.json new file mode 100644 index 00000000..51eba556 --- /dev/null +++ b/broadcast/DeploySwapFacility.s.sol/16661/run-latest.json @@ -0,0 +1,246 @@ +{ + "transactions": [ + { + "hash": "0x06f9479682a5ac09f733046aad68f9ad75988abed8ff6641ced3c914aec778e7", + "transactionType": "CREATE", + "contractName": "SwapFacility", + "contractAddress": "0x23d8162e084aa33d8ef6fcc0ab33f4028a53ee79", + "function": null, + "arguments": [ + "0x866A2BF4E572CbcF37D5071A7a58503Bfb36be1b", + "0x119FbeeDD4F4f4298Fb59B720d5654442b81ae2c" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "gas": "0x453886", + "value": "0x0", + "input": "0x60c060405234801561000f575f80fd5b5060405161401238038061401283398101604081905261002e91610162565b610036610095565b6001600160a01b03821660808190526100625760405163b01d5e2b60e01b815260040160405180910390fd5b6001600160a01b03811660a081905261008e576040516379a6314960e01b815260040160405180910390fd5b5050610193565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101445780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461015d575f80fd5b919050565b5f8060408385031215610173575f80fd5b61017c83610147565b915061018a60208401610147565b90509250929050565b60805160a051613dfc6102165f395f818161039e01528181612756015261282d01525f81816105ff0152818161152f0152818161182d015281816118e901528181611bce015281816120ef0152818161223901528181612282015281816129c301528181612a7c01528181612b2e01528181612dd901526130020152613dfc5ff3fe608060405234801561000f575f80fd5b5060043610610283575f3560e01c8063799c44b211610157578063c64f5351116100d2578063e274ffb811610088578063efb754a81161006e578063efb754a8146106ce578063ff189d1c146106e1578063ff60734c146106f4575f80fd5b8063e274ffb814610694578063e63ab1e9146106a7575f80fd5b8063d737d0c7116100b8578063d737d0c714610647578063d8e211321461066e578063de3d425414610681575f80fd5b8063c64f535114610621578063d547741f14610634575f80fd5b80639e5e91f411610127578063a8ffb8a51161010d578063a8ffb8a514610589578063b63b1648146105b0578063c3b6f939146105fa575f80fd5b80639e5e91f41461056f578063a217fddf14610582575f80fd5b8063799c44b2146104ea5780638456cb59146104fd57806391d14854146105055780639d4d470a1461055c575f80fd5b80632b20e397116102015780635a734520116101b75780635d77e1ca1161019d5780635d77e1ca1461046a57806360657bc61461047d5780636e81221c146104d7575f80fd5b80635a734520146104195780635c975abb14610440575f80fd5b806336568abe116101e757806336568abe146103eb5780633f4ba83a146103fe578063485cc95514610406575f80fd5b80632b20e397146103995780632f2ff15d146103d8575f80fd5b806314217eed11610256578063264e97e01161023c578063264e97e01461036057806329b6eca9146103735780632af4d36e14610386575f80fd5b806314217eed1461030c578063248a9ca31461031f575f80fd5b806301ffc9a71461028757806304db4741146102af5780630a85ce8c146102c4578063135597c3146102f9575b5f80fd5b61029a6102953660046137b7565b610707565b60405190151581526020015b60405180910390f35b6102c26102bd36600461380a565b61079f565b005b6102eb7f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000081565b6040519081526020016102a6565b61029a61030736600461386e565b61089e565b6102c261031a36600461389e565b6108e2565b6102eb61032d36600461391a565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b61029a61036e36600461386e565b610a77565b6102c261038136600461386e565b610a9e565b6102c261039436600461393e565b610bbb565b6103c07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a6565b6102c26103e6366004613975565b610cb6565b6102c26103f9366004613975565b610cff565b6102c2610d4b565b6102c2610414366004613998565b610d80565b6102eb7f6561726e6572730000000000000000000000000000000000000000000000000081565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661029a565b6102c2610478366004613a09565b610ef3565b61029a61048b366004613998565b6001600160a01b039182165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde016020908152604080832093909416825291909152205460ff1690565b6102c26104e5366004613a92565b61106b565b6102c26104f8366004613ae2565b611168565b6102c26112ee565b61029a610513366004613975565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6102c261056a36600461393e565b611320565b6102c261057d366004613b2a565b611448565b6102eb5f81565b6102eb7fafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b4381565b61029a6105be36600461386e565b6001600160a01b03165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602052604090205460ff1690565b6103c07f000000000000000000000000000000000000000000000000000000000000000081565b6102c261062f36600461393e565b61155e565b6102c2610642366004613975565b611673565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6103c0565b61029a61067c366004613b5e565b6116b6565b61029a61068f36600461386e565b611aa9565b6102c26106a2366004613b2a565b611ae8565b6102eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102c26106dc366004613b9b565b611bf5565b61029a6106ef36600461386e565b611d5b565b6102c2610702366004613c36565b611daa565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061079957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615610801576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61080b33610a77565b6108155733610875565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610851573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108759190613cc7565b905061088081611f41565b61088d8686868686611f67565b6108965f611f41565b505050505050565b5f7f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde005b6001600160a01b039092165f90815260209290925250604090205460ff1690565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615610944576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61094e33610a77565b61095857336109b8565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b89190613cc7565b90506109c381611f41565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b038a169063d505accf9060e4015f604051808303815f87803b158015610a45575f80fd5b505af1925050508015610a56575060015b50610a638989898961222f565b610a6c5f611f41565b505050505050505050565b5f7f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a502006108c1565b60025f610aa9612355565b805490915068010000000000000000900460ff1680610ad65750805467ffffffffffffffff808416911610155b15610b0d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001667ffffffffffffffff83161768010000000000000000178155610b538361237d565b80547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610bc5816123f3565b6001600160a01b038316610c05576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811515610c118461089e565b151514610cb1576001600160a01b0383165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde00602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527fa1e65189c2e656be12ff01879244361cbbc5fe8a08224278b332004fe3489f5891015b60405180910390a25b505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610cef816123f3565b610cf983836123fd565b50505050565b6001600160a01b0381163314610d41576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cb182826124e7565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610d75816123f3565b610d7d6125a9565b50565b5f610d89612355565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610db55750825b90505f8267ffffffffffffffff166001148015610dd15750303b155b905081158015610ddf575080155b15610e16576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e775784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e8087612639565b610e898661237d565b8315610eea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615610f55576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f5f33610a77565b610f695733610fc9565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc99190613cc7565b9050610fd481611f41565b6040517f9fd5a6cf0000000000000000000000000000000000000000000000000000000081526001600160a01b03891690639fd5a6cf9061102390339030908b908a908a908a90600401613ce2565b5f604051808303815f87803b15801561103a575f80fd5b505af192505050801561104b575060015b506110588888888861222f565b6110615f611f41565b5050505050505050565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156110cd576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110d733610a77565b6110e15733611141565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111419190613cc7565b905061114c81611f41565b6111588585858561222f565b6111615f611f41565b5050505050565b5f611172816123f3565b6001600160a01b0384166111b2576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166111f2576040517f3099ab8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038481165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209387168352929052205460ff16151582151514610cf9576001600160a01b038481165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527fe315f6e65becaee65bf0cbc2a489ea61e16e2ab2845a5aa3ec92420dc284117a91015b60405180910390a350505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611318816123f3565b610d7d61268b565b5f61132a816123f3565b6001600160a01b03831661136a576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115156113ad846001600160a01b03165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602052604090205460ff1690565b151514610cb1576001600160a01b0383165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f9d4d0b01aa7e4fe9a02187a57e48faf9eaf09d1a084d3ab7a6ca3cd8f2047c149101610ca8565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c16156114aa576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114b433610a77565b6114be573361151e565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151e9190613cc7565b905061152981611f41565b611555847f0000000000000000000000000000000000000000000000000000000000000000858561222f565b610cf95f611f41565b5f611568816123f3565b6001600160a01b0383166115a8576040517f920d929200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f9081527f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a50200602081905260409091205483151560ff9091161515036115f75750505050565b6001600160a01b0384165f818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527ff03b9904b8234e041267377d7a55ddb345d1ee737d0116a2e621e3a5fad07a7d910160405180910390a250505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546116ac816123f3565b610cf983836124e7565b5f80806001600160a01b0385163b15806116d857506001600160a01b0384163b155b156116e7575f92505050611aa2565b846001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561175f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261175c91810190613d5c565b60015b156117675791505b836001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117dc91810190613d5c565b60015b156117e75790505b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16806118145750815b8061181c5750805b1561182b575f92505050611aa2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036118e75761186d84611d5b565b61187b575f92505050611aa2565b6118848461089e565b6118965761189186611aa9565b6118de565b6001600160a01b038085165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde0160209081526040808320938a168352929052205460ff165b92505050611aa2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036119995761192985611d5b565b611937575f92505050611aa2565b6119408561089e565b61194d5761189186611aa9565b6001600160a01b038086165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde0160209081526040808320938a168352929052205460ff166118de565b5f6119a385611d5b565b90506119ae86611d5b565b80156119b75750805b156119e2576119c58661089e565b1580156119d857506119d68561089e565b155b9350505050611aa2565b8015611a9b576040517fc537bed00000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286169063c537bed090602401602060405180830381865afa925050508015611a81575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a7e91810190613d5c565b60015b611a90575f9350505050611aa2565b9350611aa292505050565b5f93505050505b9392505050565b6001600160a01b0381165f9081527f6b691b2d012e26a1efd9948ce05990847eae29d1cebd577c171024c61e06d6eb602052604081205460ff16610799565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611b4a576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611b5433610a77565b611b5e5733611bbe565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b9a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbe9190613cc7565b9050611bc981611f41565b6115557f000000000000000000000000000000000000000000000000000000000000000085858561222f565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611c57576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611c6133610a77565b611c6b5733611ccb565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ccb9190613cc7565b9050611cd681611f41565b6040517f9fd5a6cf0000000000000000000000000000000000000000000000000000000081526001600160a01b03891690639fd5a6cf90611d2590339030908b908a908a908a90600401613ce2565b5f604051808303815f87803b158015611d3c575f80fd5b505af1925050508015611d4d575060015b50610a638989898989611f67565b5f611d6582612704565b8061079957506001600160a01b0382165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde02602052604090205460ff16610799565b6001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611e0c576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611e1633610a77565b611e205733611e80565b336001600160a01b031663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e809190613cc7565b9050611e8b81611f41565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b038a169063d505accf9060e4015f604051808303815f87803b158015611f0d575f80fd5b505af1925050508015611f1e575060015b50611f2c8a8a8a8a8a611f67565b611f355f611f41565b50505050505050505050565b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b611f6f612896565b611f78846128f4565b611f81836128f4565b611f8a8461293e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015611ff3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120179190613d5c565b505f61202230612989565b6040517f39f47693000000000000000000000000000000000000000000000000000000008152306004820152602481018590529091506001600160a01b038616906339f47693906044015f604051808303815f87803b158015612083575f80fd5b505af1158015612095573d5f803e3d5ffd5b50505050806120a330612989565b6120ad9190613d77565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af1158015612137573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215b9190613d5c565b506040517f88a47d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301528381166024830152604482018590528516906388a47d4d906064015f604051808303815f87803b1580156121c4575f80fd5b505af11580156121d6573d5f803e3d5ffd5b50505050836001600160a01b0316866001600160a01b03167f3db36e30094696c050a3ed5c90093ddac4ad15aec17a4869d08b09eb540cf0fe8560405161221f91815260200190565b60405180910390a3505050505050565b612237612896565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036122805761227b838383612a2e565b610cf9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036122c45761227b848383612c61565b5f6122ce84611d5b565b90506122d985611d5b565b80156122e25750805b156122f9576122f385858585612e8b565b50610cf9565b801561230b576122f385858585613143565b6040517f75c4c05a0000000000000000000000000000000000000000000000000000000081526001600160a01b038087166004830152851660248201526044015b60405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610799565b612385613251565b6001600160a01b0381166123c5576040517f042d717b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ef7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a826123fd565b5050565b610d7d813361328f565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166124de575f848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556124943390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610799565b5f915050610799565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156124de575f848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610799565b6125b161331b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b612641613251565b6001600160a01b038116612681576040517f7289db0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ef5f826123fd565b612693612896565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361261b565b6040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081527f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000060048201525f9081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac090602401602060405180830381865afa1580156127a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c79190613daf565b14158061079957506040517fd7d1c1c00000000000000000000000000000000000000000000000000000000081527f6561726e6572730000000000000000000000000000000000000000000000000060048201526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d7d1c1c090604401602060405180830381865afa158015612872573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190613d5c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156128f2576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6128fd81611d5b565b610d7d576040517f2d32af600000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161234c565b6129478161089e565b15610d7d576040517f0bc7a0d00000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161234c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612a0a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190613daf565b612a37836128f4565b612a418333613376565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303815f875af1158015612aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aee9190613d5c565b506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015612b74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b989190613d5c565b506040517fbf376c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526024820184905284169063bf376c7a906044015f604051808303815f87803b158015612bf9575f80fd5b505af1158015612c0b573d5f803e3d5ffd5b50505050806001600160a01b0316836001600160a01b03167fea5845e6161e56b30740f4a743f316fa77bd8f48b1c3ce6eff595ab0385ba74584604051612c5491815260200190565b60405180910390a3505050565b612c6a836128f4565b612c748333613376565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303815f875af1158015612cdd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d019190613d5c565b505f612d0c30612989565b6040517f39f47693000000000000000000000000000000000000000000000000000000008152306004820152602481018590529091506001600160a01b038516906339f47693906044015f604051808303815f87803b158015612d6d575f80fd5b505af1158015612d7f573d5f803e3d5ffd5b5050505080612d8d30612989565b612d979190613d77565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015612e21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e459190613d5c565b50816001600160a01b0316846001600160a01b03167f20715489f1868041ab913834efbaabc996170336daf633a4999d62bd5c162f08856040516112e091815260200190565b612e948461293e565b612e9d8361293e565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015612f06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2a9190613d5c565b505f612f3530612989565b6040517f39f47693000000000000000000000000000000000000000000000000000000008152306004820152602481018590529091506001600160a01b038616906339f47693906044015f604051808303815f87803b158015612f96575f80fd5b505af1158015612fa8573d5f803e3d5ffd5b5050505080612fb630612989565b612fc09190613d77565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af115801561304a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306e9190613d5c565b506040517fbf376c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820185905285169063bf376c7a906044015f604051808303815f87803b1580156130cf575f80fd5b505af11580156130e1573d5f803e3d5ffd5b50505050816001600160a01b0316846001600160a01b0316866001600160a01b03167f7621e0d883c1038028d167fa29ecc01dbb8bc0cf673db584432530d693259e518660405161313491815260200190565b60405180910390a45050505050565b61314d8484613466565b6131626001600160a01b038516333085613592565b6131766001600160a01b038516848461360e565b6040517f623556380000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301528281166024830152604482018490528416906362355638906064015f604051808303815f87803b1580156131de575f80fd5b505af11580156131f0573d5f803e3d5ffd5b50505050806001600160a01b0316836001600160a01b0316856001600160a01b03167fdd2f3d796c66437c962d6e7f629eda41bbcad4ef9f0725998089509dace104fb8560405161324391815260200190565b60405180910390a450505050565b6132596136cb565b6128f2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166123ef576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161234c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166128f2576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61337f8261089e565b15613414576001600160a01b038083165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209385168352929052205460ff166123ef576040517fe5fae0d00000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301528216602482015260440161234c565b61341d81611aa9565b6123ef576040517f10833dfe0000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301528216602482015260440161234c565b6040517fc537bed00000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015282169063c537bed090602401602060405180830381865afa9250505080156134ff575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526134fc91810190613d5c565b60015b613548576040517f75c4c05a0000000000000000000000000000000000000000000000000000000081526001600160a01b0380841660048301528216602482015260440161234c565b80610cb1576040517f75c4c05a0000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260440161234c565b6040516001600160a01b038481166024830152838116604483015260648201839052610cf99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506136e9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261368d848261376e565b610cf9576040516001600160a01b0384811660248301525f60448301526136c191869182169063095ea7b3906064016135c7565b610cf984826136e9565b5f6136d4612355565b5468010000000000000000900460ff16919050565b5f8060205f8451602086015f885af180613708576040513d5f823e3d81fd5b50505f513d9150811561371f57806001141561372c565b6001600160a01b0384163b155b15610cf9576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161234c565b5f805f8060205f8651602088015f8a5af192503d91505f5190508280156137ad5750811561379f57806001146137ad565b5f866001600160a01b03163b115b9695505050505050565b5f602082840312156137c7575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa2575f80fd5b6001600160a01b0381168114610d7d575f80fd5b5f805f805f60a0868803121561381e575f80fd5b8535613829816137f6565b94506020860135613839816137f6565b93506040860135613849816137f6565b9250606086013591506080860135613860816137f6565b809150509295509295909350565b5f6020828403121561387e575f80fd5b8135611aa2816137f6565b803560ff81168114613899575f80fd5b919050565b5f805f805f805f80610100898b0312156138b6575f80fd5b88356138c1816137f6565b975060208901356138d1816137f6565b96506040890135955060608901356138e8816137f6565b9450608089013593506138fd60a08a01613889565b979a969950949793969295929450505060c08201359160e0013590565b5f6020828403121561392a575f80fd5b5035919050565b8015158114610d7d575f80fd5b5f806040838503121561394f575f80fd5b823561395a816137f6565b9150602083013561396a81613931565b809150509250929050565b5f8060408385031215613986575f80fd5b82359150602083013561396a816137f6565b5f80604083850312156139a9575f80fd5b82356139b4816137f6565b9150602083013561396a816137f6565b5f8083601f8401126139d4575f80fd5b50813567ffffffffffffffff8111156139eb575f80fd5b602083019150836020828501011115613a02575f80fd5b9250929050565b5f805f805f805f60c0888a031215613a1f575f80fd5b8735613a2a816137f6565b96506020880135613a3a816137f6565b9550604088013594506060880135613a51816137f6565b93506080880135925060a088013567ffffffffffffffff811115613a73575f80fd5b613a7f8a828b016139c4565b989b979a50959850939692959293505050565b5f805f8060808587031215613aa5575f80fd5b8435613ab0816137f6565b93506020850135613ac0816137f6565b9250604085013591506060850135613ad7816137f6565b939692955090935050565b5f805f60608486031215613af4575f80fd5b8335613aff816137f6565b92506020840135613b0f816137f6565b91506040840135613b1f81613931565b809150509250925092565b5f805f60608486031215613b3c575f80fd5b8335613b47816137f6565b9250602084013591506040840135613b1f816137f6565b5f805f60608486031215613b70575f80fd5b8335613b7b816137f6565b92506020840135613b8b816137f6565b91506040840135613b1f816137f6565b5f805f805f805f8060e0898b031215613bb2575f80fd5b8835613bbd816137f6565b97506020890135613bcd816137f6565b96506040890135613bdd816137f6565b9550606089013594506080890135613bf4816137f6565b935060a0890135925060c089013567ffffffffffffffff811115613c16575f80fd5b613c228b828c016139c4565b999c989b5096995094979396929594505050565b5f805f805f805f805f6101208a8c031215613c4f575f80fd5b8935613c5a816137f6565b985060208a0135613c6a816137f6565b975060408a0135613c7a816137f6565b965060608a0135955060808a0135613c91816137f6565b945060a08a01359350613ca660c08b01613889565b989b979a50959894979396929550929360e081013593506101000135919050565b5f60208284031215613cd7575f80fd5b8151611aa2816137f6565b6001600160a01b03871681526001600160a01b038616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010195945050505050565b5f60208284031215613d6c575f80fd5b8151611aa281613931565b81810381811115610799577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215613dbf575f80fd5b505191905056fea2646970667358221220e5a93b6c7388be933b65bbbab5b03cd4e503f58c5848889d8341a7d1838c3b0864736f6c634300081a0033000000000000000000000000866a2bf4e572cbcf37d5071a7a58503bfb36be1b000000000000000000000000119fbeedd4f4f4298fb59b720d5654442b81ae2c", + "nonce": "0x29", + "chainId": "0x4115" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "function": "deployCreate3(bytes32,bytes)", + "arguments": [ + "0xf2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde", + "0x60a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212207e1ef283990bacfd0457406f3c52502f82b308cf9514d1d060f90256de40752764736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef0338100000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "gas": "0x14c100", + "value": "0x0", + "input": "0x9c36a286f2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000011a760a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212207e1ef283990bacfd0457406f3c52502f82b308cf9514d1d060f90256de40752764736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef033810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2a", + "chainId": "0x4115" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "contractName": null, + "address": "0x38862ac81f9ed0c39ca733bd0224b34885f40f10", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "initCode": "0x60a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212207e1ef283990bacfd0457406f3c52502f82b308cf9514d1d060f90256de40752764736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef0338100000000000000000000000000000000000000000000000000000000" + }, + { + "transactionType": "CREATE", + "contractName": "ProxyAdmin", + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "initCode": "0x608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea2646970667358221220440563b942c0bba14d525c1da4f63061d2ac892e108a1a0e7272e5f914af615364736f6c634300081a0033000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x37606b", + "logs": [ + { + "address": "0x23d8162e084aa33d8ef6fcc0ab33f4028a53ee79", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xd34819c5be008128bd2f9615b71c720f4944b97988a0ae315358f5b8145654d4", + "blockNumber": "0x17ded46", + "blockTimestamp": "0x0", + "transactionHash": "0x06f9479682a5ac09f733046aad68f9ad75988abed8ff6641ced3c914aec778e7", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000200000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x06f9479682a5ac09f733046aad68f9ad75988abed8ff6641ced3c914aec778e7", + "transactionIndex": "0x0", + "blockHash": "0xd34819c5be008128bd2f9615b71c720f4944b97988a0ae315358f5b8145654d4", + "blockNumber": "0x17ded46", + "gasUsed": "0x37606b", + "effectiveGasPrice": "0x11e1a3008", + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": null, + "contractAddress": "0x23d8162e084aa33d8ef6fcc0ab33f4028a53ee79" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x109a66", + "logs": [ + { + "address": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "topics": [ + "0x2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c9067", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10", + "0x71cf965fb04bcfeb2ee0ec3b03e0aaaeb87ea1d4bb55d5ad209603cfa3bf0d2c" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000023d8162e084aa33d8ef6fcc0ab33f4028a53ee79" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "0x000000000000000000000000ce5f2dbf3173a941d8493fd31a9d40a93ef03381", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f38d8a5583f9316084e9c40737244870c565924", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511", + "0x000000000000000000000000b6807116b3b1b321a390594e31ecd6e0076f6278" + ], + "data": "0x", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "blockTimestamp": "0x0", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "logIndex": "0x7", + "removed": false + } + ], + "logsBloom": "0x00020004000000000000000000000000400000000000000400800000240000010000000000000000000000000000200000000000002804100000000000000000002000000000000000000000020012010001000000000000040000100000000000000000020000000000000000000800000020800020000000000000000100400000000000000001040800000000008000000000000080400000004000800000000000000000000000000000000000000000000001800000001400000000000000000020000000000200000020000000000000002404000100002000000020000000800000000210000000000000000000000480000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc1158425db798ec30d124cd3865e860d3d156fff042db82aa152fe6f6a8d14cf", + "transactionIndex": "0x0", + "blockHash": "0x63834401248df0d9937bd138f395f1161c04d9cca834e3e454e125e35735b00b", + "blockNumber": "0x17ded4c", + "gasUsed": "0x109a66", + "effectiveGasPrice": "0x11e1a3008", + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1771368196969, + "chain": 16661, + "commit": "503c8bb" +} diff --git a/deployments/16661.json b/deployments/16661.json new file mode 100644 index 00000000..c37335dd --- /dev/null +++ b/deployments/16661.json @@ -0,0 +1,6 @@ +{ + "extensionAddresses": [], + "extensionNames": [], + "swapAdapter": "0x0000000000000000000000000000000000000000", + "swapFacility": "0xB6807116b3B1B321a390594e31ECD6e0076f6278" +} diff --git a/lib/common b/lib/common index 4a405007..20440d03 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit 4a405007235b8b145c08456a05cdbdcd43609bd2 +Subproject commit 20440d03de21fe62970829245872e9adae6cd822 diff --git a/script/Config.sol b/script/Config.sol index e11c9e39..f4efa247 100644 --- a/script/Config.sol +++ b/script/Config.sol @@ -84,6 +84,7 @@ contract Config { uint256 public constant CITREA_CHAIN_ID = 4114; uint256 public constant SEI_CHAIN_ID = 1329; uint256 public constant LINEA_CHAIN_ID = 59144; + uint256 public constant ZG_CHAIN_ID = 16661; // Testnet chain IDs uint256 public constant LOCAL_CHAIN_ID = 31337; @@ -138,6 +139,7 @@ contract Config { if (chainId_ == CITREA_CHAIN_ID) return _getDefaultDeployConfig(); if (chainId_ == SEI_CHAIN_ID) return _getDefaultDeployConfig(); if (chainId_ == LINEA_CHAIN_ID) return _getDefaultDeployConfig(); + if (chainId_ == ZG_CHAIN_ID) return _getDefaultDeployConfig(); // Testnet configs if (chainId_ == LOCAL_CHAIN_ID) return _getDefaultDeployConfig(); diff --git a/script/deploy/DeployBase.s.sol b/script/deploy/DeployBase.s.sol index f1b694e2..dabddf2c 100644 --- a/script/deploy/DeployBase.s.sol +++ b/script/deploy/DeployBase.s.sol @@ -164,7 +164,7 @@ contract DeployBase is DeployHelpers, ScriptBase { proxy = _deployCreate3TransparentProxy( implementation, - extensionConfig.admin, + 0x8Cfac65f5621D699f9efAa84DDaff2A88eeEa405, // Moonpay Proxy Admin abi.encodeWithSelector( MYieldToOneForcedTransfer.initialize.selector, extensionConfig.extensionName, diff --git a/src/components/forcedTransferable/ForcedTransferable.sol b/src/components/forcedTransferable/ForcedTransferable.sol index ecc7538d..3453a01b 100644 --- a/src/components/forcedTransferable/ForcedTransferable.sol +++ b/src/components/forcedTransferable/ForcedTransferable.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity 0.8.26; +pragma solidity ^0.8.26; import { AccessControlUpgradeable } from "../../../lib/common/lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol"; diff --git a/src/components/forcedTransferable/IForcedTransferable.sol b/src/components/forcedTransferable/IForcedTransferable.sol index 1ab9b464..5080a98e 100644 --- a/src/components/forcedTransferable/IForcedTransferable.sol +++ b/src/components/forcedTransferable/IForcedTransferable.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity 0.8.26; +pragma solidity ^0.8.26; interface IForcedTransferable { /* ============ Events ============ */ diff --git a/src/components/freezable/Freezable.sol b/src/components/freezable/Freezable.sol index 09b7c9c0..e8479321 100644 --- a/src/components/freezable/Freezable.sol +++ b/src/components/freezable/Freezable.sol @@ -56,7 +56,6 @@ abstract contract Freezable is IFreezable, FreezableStorageLayout, AccessControl /// @inheritdoc IFreezable function freezeAccounts(address[] calldata accounts) external virtual onlyRole(FREEZE_MANAGER_ROLE) { FreezableStorageStruct storage $ = _getFreezableStorageLocation(); - for (uint256 i; i < accounts.length; ++i) { _freeze($, accounts[i]); } @@ -83,6 +82,20 @@ abstract contract Freezable is IFreezable, FreezableStorageLayout, AccessControl return _getFreezableStorageLocation().isFrozen[account]; } + /* ============ Hooks For Internal Interactive Functions ============ */ + + /** + * @dev Hook called before freezing an account. + * @param account The account to be frozen. + */ + function _beforeFreeze(address account) internal virtual {} + + /** + * @dev Hook called before unfreezing an account. + * @param account The account to be unfrozen. + */ + function _beforeUnfreeze(address account) internal virtual {} + /* ============ Internal Interactive Functions ============ */ /** @@ -94,6 +107,8 @@ abstract contract Freezable is IFreezable, FreezableStorageLayout, AccessControl // Return early if the account is already frozen if ($.isFrozen[account]) return; + _beforeFreeze(account); + $.isFrozen[account] = true; emit Frozen(account, block.timestamp); @@ -108,6 +123,8 @@ abstract contract Freezable is IFreezable, FreezableStorageLayout, AccessControl // Return early if the account is not frozen if (!$.isFrozen[account]) return; + _beforeUnfreeze(account); + $.isFrozen[account] = false; emit Unfrozen(account, block.timestamp); diff --git a/src/components/pausable/Pausable.sol b/src/components/pausable/Pausable.sol index 98d3b4ae..c6122c23 100644 --- a/src/components/pausable/Pausable.sol +++ b/src/components/pausable/Pausable.sol @@ -34,11 +34,25 @@ abstract contract Pausable is IPausable, AccessControlUpgradeable, PausableUpgra /// @inheritdoc IPausable function pause() external onlyRole(PAUSER_ROLE) { + _beforePause(); _pause(); } /// @inheritdoc IPausable function unpause() external onlyRole(PAUSER_ROLE) { + _beforeUnpause(); _unpause(); } + + /* ============ Hooks For Internal Interactive Functions ============ */ + + /** + * @dev Hook called before pausing the contract. + */ + function _beforePause() internal virtual {} + + /** + * @dev Hook called before unpausing the contract. + */ + function _beforeUnpause() internal virtual {} } diff --git a/src/projects/yieldToOne/MYieldToOneForcedTransfer.sol b/src/projects/yieldToOne/MYieldToOneForcedTransfer.sol index 62a7e681..72583806 100644 --- a/src/projects/yieldToOne/MYieldToOneForcedTransfer.sol +++ b/src/projects/yieldToOne/MYieldToOneForcedTransfer.sol @@ -2,6 +2,8 @@ pragma solidity 0.8.26; +import { IMYieldToOne } from "./interfaces/IMYieldToOne.sol"; + import { MYieldToOne } from "./MYieldToOne.sol"; import { ForcedTransferable } from "../../components/forcedTransferable/ForcedTransferable.sol"; @@ -88,6 +90,27 @@ contract MYieldToOneForcedTransfer is MYieldToOne, ForcedTransferable { __ForcedTransferable_init(forcedTransferManager); } + /* ============ Interactive Functions ============ */ + + /** + * @inheritdoc IMYieldToOne + * @dev Reverts if the contract is paused. + */ + function claimYield() public override returns (uint256) { + _requireNotPaused(); + return super.claimYield(); + } + + /** + * @inheritdoc IMYieldToOne + * @dev Only updates the yield recipient address; does not claim pending yield for the previous recipient. + */ + function setYieldRecipient(address account) external override onlyRole(YIELD_RECIPIENT_MANAGER_ROLE) { + _setYieldRecipient(account); + } + + /* ============ Internal Interactive Functions ============ */ + /** * @dev Internal ERC20 force transfer function to seize funds from a frozen account. * @param frozenAccount The frozen account from which tokens are seized. diff --git a/test/unit/projects/yieldToOne/MYieldToOneForcedTransfer.t.sol b/test/unit/projects/yieldToOne/MYieldToOneForcedTransfer.t.sol index 2622c0fd..68da3bc3 100644 --- a/test/unit/projects/yieldToOne/MYieldToOneForcedTransfer.t.sol +++ b/test/unit/projects/yieldToOne/MYieldToOneForcedTransfer.t.sol @@ -5,10 +5,12 @@ pragma solidity 0.8.26; import { IERC20 } from "../../../../lib/common/src/interfaces/IERC20.sol"; import { IAccessControl } from "../../../../lib/common/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol"; +import { PausableUpgradeable } from "../../../../lib/common/lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol"; import { Upgrades, UnsafeUpgrades } from "../../../../lib/openzeppelin-foundry-upgrades/src/Upgrades.sol"; import { MYieldToOneForcedTransfer } from "../../../../src/projects/yieldToOne/MYieldToOneForcedTransfer.sol"; +import { IMYieldToOne } from "../../../../src/projects/yieldToOne/interfaces/IMYieldToOne.sol"; import { IForcedTransferable } from "../../../../src/components/forcedTransferable/IForcedTransferable.sol"; import { IFreezable } from "../../../../src/components/freezable/IFreezable.sol"; @@ -345,4 +347,120 @@ contract MYieldToOneForcedTransferUnitTest is BaseUnitTest { } } } + + /* ============ claimYield ============ */ + + function test_claimYield_noYield() external { + vm.prank(alice); + uint256 yield = mYieldToOneForcedTransfer.claimYield(); + + assertEq(yield, 0); + } + + function test_claimYield() external { + uint256 yield = 500e6; + + mToken.setBalanceOf(address(mYieldToOneForcedTransfer), mYieldToOneForcedTransfer.totalSupply() + yield); + + assertEq(mYieldToOneForcedTransfer.yield(), yield); + + vm.expectEmit(); + emit IMYieldToOne.YieldClaimed(yield); + + assertEq(mYieldToOneForcedTransfer.claimYield(), yield); + + assertEq(mYieldToOneForcedTransfer.yield(), 0); + assertEq(mYieldToOneForcedTransfer.balanceOf(yieldRecipient), yield); + } + + function test_claimYield_paused() external { + mToken.setBalanceOf(address(mYieldToOneForcedTransfer), mYieldToOneForcedTransfer.totalSupply() + 500e6); + + vm.prank(pauser); + mYieldToOneForcedTransfer.pause(); + + vm.expectRevert(PausableUpgradeable.EnforcedPause.selector); + mYieldToOneForcedTransfer.claimYield(); + } + + /* ============ setYieldRecipient ============ */ + + function test_setYieldRecipient_onlyYieldRecipientManager() public { + vm.expectRevert( + abi.encodeWithSelector( + IAccessControl.AccessControlUnauthorizedAccount.selector, + alice, + YIELD_RECIPIENT_MANAGER_ROLE + ) + ); + + vm.prank(alice); + mYieldToOneForcedTransfer.setYieldRecipient(alice); + } + + function test_setYieldRecipient_zeroYieldRecipient() public { + vm.expectRevert(IMYieldToOne.ZeroYieldRecipient.selector); + + vm.prank(yieldRecipientManager); + mYieldToOneForcedTransfer.setYieldRecipient(address(0)); + } + + function test_setYieldRecipient_noUpdate() public { + assertEq(mYieldToOneForcedTransfer.yieldRecipient(), yieldRecipient); + + vm.prank(yieldRecipientManager); + mYieldToOneForcedTransfer.setYieldRecipient(yieldRecipient); + + assertEq(mYieldToOneForcedTransfer.yieldRecipient(), yieldRecipient); + } + + function test_setYieldRecipient() public { + assertEq(mYieldToOneForcedTransfer.yieldRecipient(), yieldRecipient); + + vm.expectEmit(); + emit IMYieldToOne.YieldRecipientSet(alice); + + vm.prank(yieldRecipientManager); + mYieldToOneForcedTransfer.setYieldRecipient(alice); + + assertEq(mYieldToOneForcedTransfer.yieldRecipient(), alice); + } + + function test_setYieldRecipient_doesNotClaimYield() public { + uint256 accruedYield = 500; + + // Accrue yield for the previous recipient. + mToken.setBalanceOf(address(mYieldToOneForcedTransfer), mYieldToOneForcedTransfer.totalSupply() + accruedYield); + + assertEq(mYieldToOneForcedTransfer.yield(), accruedYield); + + vm.expectEmit(); + emit IMYieldToOne.YieldRecipientSet(alice); + + vm.prank(yieldRecipientManager); + mYieldToOneForcedTransfer.setYieldRecipient(alice); + + // Recipient is updated. + assertEq(mYieldToOneForcedTransfer.yieldRecipient(), alice); + + // Previously accrued yield is NOT claimed: it remains with the contract, + // neither recipient receives a mint, and yield() still reflects the full amount. + assertEq(mYieldToOneForcedTransfer.yield(), accruedYield); + assertEq(mYieldToOneForcedTransfer.balanceOf(yieldRecipient), 0); + assertEq(mYieldToOneForcedTransfer.balanceOf(alice), 0); + } + + function test_setYieldRecipient_paused() public { + vm.prank(pauser); + mYieldToOneForcedTransfer.pause(); + + vm.expectEmit(); + emit IMYieldToOne.YieldRecipientSet(alice); + + vm.prank(yieldRecipientManager); + mYieldToOneForcedTransfer.setYieldRecipient(alice); + + // Recipient update is independent of pause state since claimYield is no longer invoked. + assertEq(mYieldToOneForcedTransfer.yieldRecipient(), alice); + } }