{ "contractName": "Wormhole", "abi": [ { "inputs": [ { "components": [ { "internalType": "address[]", "name": "keys", "type": "address[]" }, { "internalType": "uint32", "name": "expiration_time", "type": "uint32" } ], "internalType": "struct Wormhole.GuardianSet", "name": "initial_guardian_set", "type": "tuple" }, { "internalType": "address", "name": "wrapped_asset_master", "type": "address" }, { "internalType": "uint32", "name": "_vaa_expiry", "type": "uint32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "oldGuardianIndex", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "newGuardianIndex", "type": "uint32" } ], "name": "LogGuardianSetChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "target_chain", "type": "uint8" }, { "indexed": false, "internalType": "uint8", "name": "token_chain", "type": "uint8" }, { "indexed": true, "internalType": "bytes32", "name": "token", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "name": "LogTokensLocked", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "guardian_set_index", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "guardian_sets", "outputs": [ { "internalType": "uint32", "name": "expiration_time", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isWrappedAsset", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vaa_expiry", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wrappedAssetMaster", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "wrappedAssets", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [ { "internalType": "uint32", "name": "idx", "type": "uint32" } ], "name": "getGuardianSet", "outputs": [ { "components": [ { "internalType": "address[]", "name": "keys", "type": "address[]" }, { "internalType": "uint32", "name": "expiration_time", "type": "uint32" } ], "internalType": "struct Wormhole.GuardianSet", "name": "gs", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "vaa", "type": "bytes" } ], "name": "submitVAA", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "asset", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "internalType": "uint8", "name": "target_chain", "type": "uint8" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "name": "lockAssets", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "internalType": "uint8", "name": "target_chain", "type": "uint8" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "name": "lockETH", "outputs": [], "stateMutability": "payable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"initial_guardian_set\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"wrapped_asset_master\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_vaa_expiry\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"oldGuardianIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newGuardianIndex\",\"type\":\"uint32\"}],\"name\":\"LogGuardianSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_chain\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"idx\",\"type\":\"uint32\"}],\"name\":\"getGuardianSet\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"gs\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_index\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"guardian_sets\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaa_expiry\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedAssetMaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"wrappedAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":\"Wormhole\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol\":{\"keccak256\":\"0x4a28e69afc4c1c1aee48c7b497f9b8452b295ddcf4bbf453d594a1467016d5f2\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://279e22c43f79567e9f7842cfca8ad2329bbbad2eac30413b620796d51f308719\",\"dweb:/ipfs/QmbdRLJYoKJxDbDLeverNMHsNFEcxnohAA713UFLjLm3Jy\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":{\"keccak256\":\"0x94eedbafd3d2acad7a8a0092fd889d97c2b51ef9950fd7bdd5c0da2d15c741d5\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://8e4320749035e719bd8f833b062e4548d829182118f126b80c0cbc482bb1d41d\",\"dweb:/ipfs/QmYubVxQafG6YCQS25ZMnTcqo8EGBCQVx5Kuq1VJLmfzkb\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x029a9b6e1df05a76c4c09570bf403eb91a2df33acdb0b7414e950f35fa240b97\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://a1d5d79ed2fdbe41c9eb88971ab0c7677b66579d6ef322a5eb7b23bf8fc9f891\",\"dweb:/ipfs/QmPRZWXa3hx87fJ9u14rDxZ7mYXL2EjQHcDmC2jYZEDMNW\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf3b30f8a49631420635a8c35daacfcaa338012755f18a76fdd118730256f9a27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d7de652204c2ee291a61aa984103dfc7ae4392d651fbbc44a0079caee7c69a3\",\"dweb:/ipfs/Qmcw1cQnq9eWDnrCBwU3TNyqLfTMUFg5YKpYUkELoMPuUE\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xdfb4f812600ba4ce6738c35584ceb8c9433472583051b48ba5b1f66cb758a498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df02dffe1c1de089d9b4f6192f0dcf464526f2230f420b3deec4645e0cdd2bff\",\"dweb:/ipfs/QmcqXGAU3KJqwrgUVoGJ2W8osomhSJ4R5kdsRpbuW3fELS\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x7ff0067f2d7df4187eaa1cb4800949b929602c9d9cb20fcaee6922a7613ef2fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78aa63fd7fbb8df2942b6c6e7bd89349507e306edbd5909ee8d9575c31be57e5\",\"dweb:/ipfs/Qmf6z9KWKCJCfEVokgTBhBVq5yHtE6is31N8AV5BHdMkqQ\"]}},\"version\":1}", "bytecode": "0x60806040526002600160146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040516200370b3803806200370b83398181016040528101906200005391906200033e565b600160008190555082600260008063ffffffff1681526020019081526020016000206000820151816000019080519060200190620000939291906200014b565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055509050506000600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200047c565b828054828255906000526020600020908101928215620001c7579160200282015b82811115620001c65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200016c565b5b509050620001d69190620001da565b5090565b5b808211156200021357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620001db565b5090565b600081519050620002288162000448565b92915050565b600082601f8301126200024057600080fd5b8151620002576200025182620003db565b620003ad565b915081818352602084019350602081019050838560208402820111156200027d57600080fd5b60005b83811015620002b1578162000296888262000217565b84526020840193506020830192505060018101905062000280565b5050505092915050565b600060408284031215620002ce57600080fd5b620002da6040620003ad565b9050600082015167ffffffffffffffff811115620002f757600080fd5b62000305848285016200022e565b60008301525060206200031b8482850162000327565b60208301525092915050565b600081519050620003388162000462565b92915050565b6000806000606084860312156200035457600080fd5b600084015167ffffffffffffffff8111156200036f57600080fd5b6200037d86828701620002bb565b9350506020620003908682870162000217565b9250506040620003a38682870162000327565b9150509250925092565b6000604051905081810181811067ffffffffffffffff82111715620003d157600080fd5b8060405250919050565b600067ffffffffffffffff821115620003f357600080fd5b602082029050602081019050919050565b6000620004118262000418565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b620004538162000404565b81146200045f57600080fd5b50565b6200046d8162000438565b81146200047957600080fd5b50565b61327f806200048c6000396000f3fe6080604052600436106100955760003560e01c80637f04d9e6116100595780637f04d9e6146101f8578063822d82b31461022357806399da1d3c1461024e578063b6694c2a14610279578063f951975a146102b6576100d5565b806313cca1a9146101105780631a2be4da146101395780633bc0aee61461017657806342b0aefa1461019f57806358d62e46146101dc576100d5565b366100d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100cc90612da0565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010790612da0565b60405180910390fd5b34801561011c57600080fd5b5061013760048036038101906101329190612371565b6102f3565b005b34801561014557600080fd5b50610160600480360381019061015b9190612348565b610745565b60405161016d9190612cde565b60405180910390f35b34801561018257600080fd5b5061019d600480360381019061019891906124b2565b610765565b005b3480156101ab57600080fd5b506101c660048036038101906101c19190612520565b611091565b6040516101d39190612f82565b60405180910390f35b6101f660048036038101906101f19190612463565b6110bf565b005b34801561020457600080fd5b5061020d611269565b60405161021a9190612f82565b60405180910390f35b34801561022f57600080fd5b5061023861127f565b6040516102459190612f82565b60405180910390f35b34801561025a57600080fd5b50610263611295565b6040516102709190612c1f565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190612411565b6112bb565b6040516102ad9190612c1f565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d89190612520565b6112ee565b6040516102ea9190612f60565b60405180910390f35b60026000541415610339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033090612f40565b60405180910390fd5b60026000819055506000841415610385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037c90612e80565b60405180910390fd5b6000600160149054906101000a900460ff1690506000600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561055f578673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33886040518363ffffffff1660e01b8152600401610428929190612c55565b600060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a057600080fd5b505afa1580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d89190612549565b91508673ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561052057600080fd5b505afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610558919061243a565b90506106da565b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161059a9190612c3a565b60206040518083038186803b1580156105b257600080fd5b505afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906124f7565b90506106193330898b73ffffffffffffffffffffffffffffffffffffffff166113db909392919063ffffffff16565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106549190612c3a565b60206040518083038186803b15801561066c57600080fd5b505afa158015610680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a491906124f7565b90506106b9828261146490919063ffffffff16565b97508873ffffffffffffffffffffffffffffffffffffffff1660001b925050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b817f5742f26a345471409566883d5cac5a7d295eee7092e5be3a7d6c60bc2a3e24208685898b8960405161072c959493929190612fef565b60405180910390a3505060016000819055505050505050565b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290612f40565b60405180910390fd5b6002600081905550600061080d600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b905060018160ff1614610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90612e00565b60405180910390fd5b60006108af600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061150c90919063ffffffff16565b9050600061090b600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b60ff169050600081604202600601905060006109748288888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061150c90919063ffffffff16565b905042600360049054906101000a900463ffffffff16820163ffffffff16116109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990612e20565b60405180910390fd5b6000610a3283848a8a9050038a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061156a9092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff1615610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9390612d80565b60405180910390fd5b610aa461215c565b600260008763ffffffff1663ffffffff16815260200190815260200160002060405180604001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610b5357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b09575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff161480610ba6575042816020015163ffffffff16115b610be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdc90612ec0565b60405180910390fd5b846001600460038460000151510281610bfa57fe5b04011115610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612e60565b60405180910390fd5b60005b85811015610eb9576000610ca7604283026006018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b90506000610d08604284026007018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061162c90919063ffffffff16565b90506000610d69604285026027018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061162c90919063ffffffff16565b90506000610dca604286026047018f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b9050601b8101905085600001518460ff1681518110610de557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1660018883868660405160008152602001604052604051610e269493929190612cf9565b6020604051602081039080840390855afa158015610e48573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90612e40565b60405180910390fd5b505050508080600101915050610c40565b506000610f16600486018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b90506060610f7e60058701600588018d8d9050038d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061156a9092919063ffffffff16565b905060018260ff161415610ffa57600360009054906101000a900463ffffffff1663ffffffff168863ffffffff1614610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390612dc0565b60405180910390fd5b610ff58161168a565b611050565b60108260ff1614156110145761100f81611908565b61104f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612d60565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b60026000541415611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90612f40565b60405180910390fd5b60026000819055506000341415611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890612e80565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111ad57600080fd5b505af11580156111c1573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f5742f26a345471409566883d5cac5a7d295eee7092e5be3a7d6c60bc2a3e242084600160149054906101000a900460ff16873487604051611254959493929190612fef565b60405180910390a36001600081905550505050565b600360049054906101000a900463ffffffff1681565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112f661215c565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156113a557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161135b575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b61145e846323b872dd60e01b8585856040516024016113fc93929190612c7e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbe565b50505050565b60006114a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c85565b905092915050565b600060018201835110156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90612de0565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c90612de0565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990612de0565b60405180910390fd5b60608215600081146115cf57604051915060208201604052611620565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561160d57805183526020830192506020810190506115f0565b50868552601f19601f8301166040525050505b50809150509392505050565b60006020820183511015611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90612de0565b60405180910390fd5b60008260208501015190508091505092915050565b60006116a060008361150c90919063ffffffff16565b905060006116b86004846114ae90919063ffffffff16565b905060608160ff1667ffffffffffffffff811180156116d657600080fd5b506040519080825280602002602001820160405280156117055781602001602082028036833780820191505090505b50905060005b8260ff168110156117885760006117316014830260050187611ce090919063ffffffff16565b90508083838151811061174057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061170b565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506117c961215c565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001908152602001600020600082015181600001908051906020019061183592919061217c565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff166040516118f8929190612f9d565b60405180910390a1505050505050565b600061191e6004836114ae90919063ffffffff16565b905060006119366005846114ae90919063ffffffff16565b9050600061194e603285611ce090919063ffffffff16565b905060006119666046866114ae90919063ffffffff16565b9050600061197e606787611d4d90919063ffffffff16565b90508360ff168560ff1614156119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090612f20565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790612ea0565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611b71576000611a5260478861162c90919063ffffffff16565b905060008382604051602001611a69929190612bf3565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afc57611af9828685611dab565b90505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611b37929190612cb5565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b50505050505050611bb6565b6000611b87605388611ce090919063ffffffff16565b9050611bb484838373ffffffffffffffffffffffffffffffffffffffff16611f509092919063ffffffff16565b505b505050505050565b6060611c20826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611fd69092919063ffffffff16565b9050600081511115611c805780806020019051810190611c4091906123e8565b611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7690612f00565b60405180910390fd5b5b505050565b6000838311158290611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc49190612d3e565b60405180910390fd5b5060008385039050809150509392505050565b60006014820183511015611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090612de0565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d90612de0565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250508173ffffffffffffffffffffffffffffffffffffffff166302a0958585856040518363ffffffff1660e01b8152600401611e6c929190612fc6565b600060405180830381600087803b158015611e8657600080fd5b505af1158015611e9a573d6000803e3d6000fd5b50505050816005600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550509392505050565b611fd18363a9059cbb60e01b8484604051602401611f6f929190612cb5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbe565b505050565b6060611fe58484600085611fee565b90509392505050565b6060611ff985612111565b612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90612ee0565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516120629190612bdc565b60006040518083038185875af1925050503d806000811461209f576040519150601f19603f3d011682016040523d82523d6000602084013e6120a4565b606091505b509150915081156120b9578092505050612109565b6000815111156120cc5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121009190612d3e565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561215357506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b8280548282559060005260206000209081019282156121f5579160200282015b828111156121f45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061219c565b5b5090506122029190612206565b5090565b5b8082111561223d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612207565b5090565b600081359050612250816131bf565b92915050565b600081519050612265816131d6565b92915050565b60008135905061227a816131ed565b92915050565b60008151905061228f816131ed565b92915050565b60008083601f8401126122a757600080fd5b8235905067ffffffffffffffff8111156122c057600080fd5b6020830191508360018202830111156122d857600080fd5b9250929050565b6000813590506122ee81613204565b92915050565b60008151905061230381613204565b92915050565b6000813590506123188161321b565b92915050565b60008135905061232d81613232565b92915050565b60008151905061234281613232565b92915050565b60006020828403121561235a57600080fd5b600061236884828501612241565b91505092915050565b600080600080600060a0868803121561238957600080fd5b600061239788828901612241565b95505060206123a8888289016122df565b94505060406123b98882890161226b565b93505060606123ca8882890161231e565b92505060806123db88828901612309565b9150509295509295909350565b6000602082840312156123fa57600080fd5b600061240884828501612256565b91505092915050565b60006020828403121561242357600080fd5b60006124318482850161226b565b91505092915050565b60006020828403121561244c57600080fd5b600061245a84828501612280565b91505092915050565b60008060006060848603121561247857600080fd5b60006124868682870161226b565b93505060206124978682870161231e565b92505060406124a886828701612309565b9150509250925092565b600080602083850312156124c557600080fd5b600083013567ffffffffffffffff8111156124df57600080fd5b6124eb85828601612295565b92509250509250929050565b60006020828403121561250957600080fd5b6000612517848285016122f4565b91505092915050565b60006020828403121561253257600080fd5b600061254084828501612309565b91505092915050565b60006020828403121561255b57600080fd5b600061256984828501612333565b91505092915050565b600061257e8383612599565b60208301905092915050565b6125938161311c565b82525050565b6125a2816130ad565b82525050565b6125b1816130ad565b82525050565b60006125c282613052565b6125cc8185613080565b93506125d783613042565b8060005b838110156126085781516125ef8882612572565b97506125fa83613073565b9250506001810190506125db565b5085935050505092915050565b61261e816130bf565b82525050565b61262d816130cb565b82525050565b61264461263f826130cb565b613185565b82525050565b60006126558261305d565b61265f8185613091565b935061266f818560208601613152565b80840191505092915050565b600061268682613068565b612690818561309c565b93506126a0818560208601613152565b6126a9816131a1565b840191505092915050565b60006126c160128361309c565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b600061270160188361309c565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612741602c8361309c565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b60006127a760398361309c565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b600061280d60128361309c565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b600061284d60188361309c565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b600061288d600f8361309c565b91507f56414120686173206578706972656400000000000000000000000000000000006000830152602082019050919050565b60006128cd60158361309c565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b600061290d60098361309c565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b600061294d60148361309c565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b600061298d60198361309c565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b60006129cd60188361309c565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612a0d601d8361309c565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612a4d602a8361309c565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ab360268361309c565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b19601f8361309c565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612b6982826125b7565b9150506020830151612b7e6020860182612b98565b508091505092915050565b612b92816130f5565b82525050565b612ba1816130ff565b82525050565b612bb0816130ff565b82525050565b612bbf8161310f565b82525050565b612bd6612bd18261310f565b61318f565b82525050565b6000612be8828461264a565b915081905092915050565b6000612bff8285612bc5565b600182019150612c0f8284612633565b6020820191508190509392505050565b6000602082019050612c3460008301846125a8565b92915050565b6000602082019050612c4f600083018461258a565b92915050565b6000604082019050612c6a600083018561258a565b612c776020830184612b89565b9392505050565b6000606082019050612c9360008301866125a8565b612ca060208301856125a8565b612cad6040830184612b89565b949350505050565b6000604082019050612cca60008301856125a8565b612cd76020830184612b89565b9392505050565b6000602082019050612cf36000830184612615565b92915050565b6000608082019050612d0e6000830187612624565b612d1b6020830186612bb6565b612d286040830185612624565b612d356060830184612624565b95945050505050565b60006020820190508181036000830152612d58818461267b565b905092915050565b60006020820190508181036000830152612d79816126b4565b9050919050565b60006020820190508181036000830152612d99816126f4565b9050919050565b60006020820190508181036000830152612db981612734565b9050919050565b60006020820190508181036000830152612dd98161279a565b9050919050565b60006020820190508181036000830152612df981612800565b9050919050565b60006020820190508181036000830152612e1981612840565b9050919050565b60006020820190508181036000830152612e3981612880565b9050919050565b60006020820190508181036000830152612e59816128c0565b9050919050565b60006020820190508181036000830152612e7981612900565b9050919050565b60006020820190508181036000830152612e9981612940565b9050919050565b60006020820190508181036000830152612eb981612980565b9050919050565b60006020820190508181036000830152612ed9816129c0565b9050919050565b60006020820190508181036000830152612ef981612a00565b9050919050565b60006020820190508181036000830152612f1981612a40565b9050919050565b60006020820190508181036000830152612f3981612aa6565b9050919050565b60006020820190508181036000830152612f5981612b0c565b9050919050565b60006020820190508181036000830152612f7a8184612b4c565b905092915050565b6000602082019050612f976000830184612ba7565b92915050565b6000604082019050612fb26000830185612ba7565b612fbf6020830184612ba7565b9392505050565b6000604082019050612fdb6000830185612bb6565b612fe86020830184612624565b9392505050565b600060a0820190506130046000830188612bb6565b6130116020830187612bb6565b61301e6040830186612624565b61302b6060830185612b89565b6130386080830184612ba7565b9695505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006130b8826130d5565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006131278261312e565b9050919050565b600061313982613140565b9050919050565b600061314b826130d5565b9050919050565b60005b83811015613170578082015181840152602081019050613155565b8381111561317f576000848401525b50505050565b6000819050919050565b600061319a826131b2565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b6131c8816130ad565b81146131d357600080fd5b50565b6131df816130bf565b81146131ea57600080fd5b50565b6131f6816130cb565b811461320157600080fd5b50565b61320d816130f5565b811461321857600080fd5b50565b613224816130ff565b811461322f57600080fd5b50565b61323b8161310f565b811461324657600080fd5b5056fea2646970667358221220093e64f2de68a8ba56b15335745c5182b42d2cffc846382a42044fbb6a6793ec64736f6c634300060c0033", "deployedBytecode": "0x6080604052600436106100955760003560e01c80637f04d9e6116100595780637f04d9e6146101f8578063822d82b31461022357806399da1d3c1461024e578063b6694c2a14610279578063f951975a146102b6576100d5565b806313cca1a9146101105780631a2be4da146101395780633bc0aee61461017657806342b0aefa1461019f57806358d62e46146101dc576100d5565b366100d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100cc90612da0565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010790612da0565b60405180910390fd5b34801561011c57600080fd5b5061013760048036038101906101329190612371565b6102f3565b005b34801561014557600080fd5b50610160600480360381019061015b9190612348565b610745565b60405161016d9190612cde565b60405180910390f35b34801561018257600080fd5b5061019d600480360381019061019891906124b2565b610765565b005b3480156101ab57600080fd5b506101c660048036038101906101c19190612520565b611091565b6040516101d39190612f82565b60405180910390f35b6101f660048036038101906101f19190612463565b6110bf565b005b34801561020457600080fd5b5061020d611269565b60405161021a9190612f82565b60405180910390f35b34801561022f57600080fd5b5061023861127f565b6040516102459190612f82565b60405180910390f35b34801561025a57600080fd5b50610263611295565b6040516102709190612c1f565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b9190612411565b6112bb565b6040516102ad9190612c1f565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d89190612520565b6112ee565b6040516102ea9190612f60565b60405180910390f35b60026000541415610339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033090612f40565b60405180910390fd5b60026000819055506000841415610385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037c90612e80565b60405180910390fd5b6000600160149054906101000a900460ff1690506000600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561055f578673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33886040518363ffffffff1660e01b8152600401610428929190612c55565b600060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a057600080fd5b505afa1580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d89190612549565b91508673ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561052057600080fd5b505afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610558919061243a565b90506106da565b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161059a9190612c3a565b60206040518083038186803b1580156105b257600080fd5b505afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea91906124f7565b90506106193330898b73ffffffffffffffffffffffffffffffffffffffff166113db909392919063ffffffff16565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106549190612c3a565b60206040518083038186803b15801561066c57600080fd5b505afa158015610680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a491906124f7565b90506106b9828261146490919063ffffffff16565b97508873ffffffffffffffffffffffffffffffffffffffff1660001b925050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b817f5742f26a345471409566883d5cac5a7d295eee7092e5be3a7d6c60bc2a3e24208685898b8960405161072c959493929190612fef565b60405180910390a3505060016000819055505050505050565b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290612f40565b60405180910390fd5b6002600081905550600061080d600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b905060018160ff1614610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90612e00565b60405180910390fd5b60006108af600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061150c90919063ffffffff16565b9050600061090b600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b60ff169050600081604202600601905060006109748288888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061150c90919063ffffffff16565b905042600360049054906101000a900463ffffffff16820163ffffffff16116109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990612e20565b60405180910390fd5b6000610a3283848a8a9050038a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061156a9092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff1615610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9390612d80565b60405180910390fd5b610aa461215c565b600260008763ffffffff1663ffffffff16815260200190815260200160002060405180604001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610b5357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b09575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff161480610ba6575042816020015163ffffffff16115b610be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdc90612ec0565b60405180910390fd5b846001600460038460000151510281610bfa57fe5b04011115610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612e60565b60405180910390fd5b60005b85811015610eb9576000610ca7604283026006018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b90506000610d08604284026007018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061162c90919063ffffffff16565b90506000610d69604285026027018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061162c90919063ffffffff16565b90506000610dca604286026047018f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b9050601b8101905085600001518460ff1681518110610de557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1660018883868660405160008152602001604052604051610e269493929190612cf9565b6020604051602081039080840390855afa158015610e48573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f90612e40565b60405180910390fd5b505050508080600101915050610c40565b506000610f16600486018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114ae90919063ffffffff16565b90506060610f7e60058701600588018d8d9050038d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061156a9092919063ffffffff16565b905060018260ff161415610ffa57600360009054906101000a900463ffffffff1663ffffffff168863ffffffff1614610fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe390612dc0565b60405180910390fd5b610ff58161168a565b611050565b60108260ff1614156110145761100f81611908565b61104f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612d60565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b60026000541415611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90612f40565b60405180910390fd5b60026000819055506000341415611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890612e80565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111ad57600080fd5b505af11580156111c1573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f5742f26a345471409566883d5cac5a7d295eee7092e5be3a7d6c60bc2a3e242084600160149054906101000a900460ff16873487604051611254959493929190612fef565b60405180910390a36001600081905550505050565b600360049054906101000a900463ffffffff1681565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112f661215c565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156113a557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161135b575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b61145e846323b872dd60e01b8585856040516024016113fc93929190612c7e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbe565b50505050565b60006114a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c85565b905092915050565b600060018201835110156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90612de0565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c90612de0565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a990612de0565b60405180910390fd5b60608215600081146115cf57604051915060208201604052611620565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561160d57805183526020830192506020810190506115f0565b50868552601f19601f8301166040525050505b50809150509392505050565b60006020820183511015611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90612de0565b60405180910390fd5b60008260208501015190508091505092915050565b60006116a060008361150c90919063ffffffff16565b905060006116b86004846114ae90919063ffffffff16565b905060608160ff1667ffffffffffffffff811180156116d657600080fd5b506040519080825280602002602001820160405280156117055781602001602082028036833780820191505090505b50905060005b8260ff168110156117885760006117316014830260050187611ce090919063ffffffff16565b90508083838151811061174057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061170b565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506117c961215c565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001908152602001600020600082015181600001908051906020019061183592919061217c565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff166040516118f8929190612f9d565b60405180910390a1505050505050565b600061191e6004836114ae90919063ffffffff16565b905060006119366005846114ae90919063ffffffff16565b9050600061194e603285611ce090919063ffffffff16565b905060006119666046866114ae90919063ffffffff16565b9050600061197e606787611d4d90919063ffffffff16565b90508360ff168560ff1614156119c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c090612f20565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790612ea0565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611b71576000611a5260478861162c90919063ffffffff16565b905060008382604051602001611a69929190612bf3565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afc57611af9828685611dab565b90505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611b37929190612cb5565b600060405180830381600087803b158015611b5157600080fd5b505af1158015611b65573d6000803e3d6000fd5b50505050505050611bb6565b6000611b87605388611ce090919063ffffffff16565b9050611bb484838373ffffffffffffffffffffffffffffffffffffffff16611f509092919063ffffffff16565b505b505050505050565b6060611c20826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611fd69092919063ffffffff16565b9050600081511115611c805780806020019051810190611c4091906123e8565b611c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7690612f00565b60405180910390fd5b5b505050565b6000838311158290611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc49190612d3e565b60405180910390fd5b5060008385039050809150509392505050565b60006014820183511015611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090612de0565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d90612de0565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250508173ffffffffffffffffffffffffffffffffffffffff166302a0958585856040518363ffffffff1660e01b8152600401611e6c929190612fc6565b600060405180830381600087803b158015611e8657600080fd5b505af1158015611e9a573d6000803e3d6000fd5b50505050816005600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550509392505050565b611fd18363a9059cbb60e01b8484604051602401611f6f929190612cb5565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbe565b505050565b6060611fe58484600085611fee565b90509392505050565b6060611ff985612111565b612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90612ee0565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516120629190612bdc565b60006040518083038185875af1925050503d806000811461209f576040519150601f19603f3d011682016040523d82523d6000602084013e6120a4565b606091505b509150915081156120b9578092505050612109565b6000815111156120cc5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121009190612d3e565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561215357506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b8280548282559060005260206000209081019282156121f5579160200282015b828111156121f45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061219c565b5b5090506122029190612206565b5090565b5b8082111561223d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612207565b5090565b600081359050612250816131bf565b92915050565b600081519050612265816131d6565b92915050565b60008135905061227a816131ed565b92915050565b60008151905061228f816131ed565b92915050565b60008083601f8401126122a757600080fd5b8235905067ffffffffffffffff8111156122c057600080fd5b6020830191508360018202830111156122d857600080fd5b9250929050565b6000813590506122ee81613204565b92915050565b60008151905061230381613204565b92915050565b6000813590506123188161321b565b92915050565b60008135905061232d81613232565b92915050565b60008151905061234281613232565b92915050565b60006020828403121561235a57600080fd5b600061236884828501612241565b91505092915050565b600080600080600060a0868803121561238957600080fd5b600061239788828901612241565b95505060206123a8888289016122df565b94505060406123b98882890161226b565b93505060606123ca8882890161231e565b92505060806123db88828901612309565b9150509295509295909350565b6000602082840312156123fa57600080fd5b600061240884828501612256565b91505092915050565b60006020828403121561242357600080fd5b60006124318482850161226b565b91505092915050565b60006020828403121561244c57600080fd5b600061245a84828501612280565b91505092915050565b60008060006060848603121561247857600080fd5b60006124868682870161226b565b93505060206124978682870161231e565b92505060406124a886828701612309565b9150509250925092565b600080602083850312156124c557600080fd5b600083013567ffffffffffffffff8111156124df57600080fd5b6124eb85828601612295565b92509250509250929050565b60006020828403121561250957600080fd5b6000612517848285016122f4565b91505092915050565b60006020828403121561253257600080fd5b600061254084828501612309565b91505092915050565b60006020828403121561255b57600080fd5b600061256984828501612333565b91505092915050565b600061257e8383612599565b60208301905092915050565b6125938161311c565b82525050565b6125a2816130ad565b82525050565b6125b1816130ad565b82525050565b60006125c282613052565b6125cc8185613080565b93506125d783613042565b8060005b838110156126085781516125ef8882612572565b97506125fa83613073565b9250506001810190506125db565b5085935050505092915050565b61261e816130bf565b82525050565b61262d816130cb565b82525050565b61264461263f826130cb565b613185565b82525050565b60006126558261305d565b61265f8185613091565b935061266f818560208601613152565b80840191505092915050565b600061268682613068565b612690818561309c565b93506126a0818560208601613152565b6126a9816131a1565b840191505092915050565b60006126c160128361309c565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b600061270160188361309c565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612741602c8361309c565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b60006127a760398361309c565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b600061280d60128361309c565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b600061284d60188361309c565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b600061288d600f8361309c565b91507f56414120686173206578706972656400000000000000000000000000000000006000830152602082019050919050565b60006128cd60158361309c565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b600061290d60098361309c565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b600061294d60148361309c565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b600061298d60198361309c565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b60006129cd60188361309c565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612a0d601d8361309c565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612a4d602a8361309c565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ab360268361309c565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b19601f8361309c565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612b6982826125b7565b9150506020830151612b7e6020860182612b98565b508091505092915050565b612b92816130f5565b82525050565b612ba1816130ff565b82525050565b612bb0816130ff565b82525050565b612bbf8161310f565b82525050565b612bd6612bd18261310f565b61318f565b82525050565b6000612be8828461264a565b915081905092915050565b6000612bff8285612bc5565b600182019150612c0f8284612633565b6020820191508190509392505050565b6000602082019050612c3460008301846125a8565b92915050565b6000602082019050612c4f600083018461258a565b92915050565b6000604082019050612c6a600083018561258a565b612c776020830184612b89565b9392505050565b6000606082019050612c9360008301866125a8565b612ca060208301856125a8565b612cad6040830184612b89565b949350505050565b6000604082019050612cca60008301856125a8565b612cd76020830184612b89565b9392505050565b6000602082019050612cf36000830184612615565b92915050565b6000608082019050612d0e6000830187612624565b612d1b6020830186612bb6565b612d286040830185612624565b612d356060830184612624565b95945050505050565b60006020820190508181036000830152612d58818461267b565b905092915050565b60006020820190508181036000830152612d79816126b4565b9050919050565b60006020820190508181036000830152612d99816126f4565b9050919050565b60006020820190508181036000830152612db981612734565b9050919050565b60006020820190508181036000830152612dd98161279a565b9050919050565b60006020820190508181036000830152612df981612800565b9050919050565b60006020820190508181036000830152612e1981612840565b9050919050565b60006020820190508181036000830152612e3981612880565b9050919050565b60006020820190508181036000830152612e59816128c0565b9050919050565b60006020820190508181036000830152612e7981612900565b9050919050565b60006020820190508181036000830152612e9981612940565b9050919050565b60006020820190508181036000830152612eb981612980565b9050919050565b60006020820190508181036000830152612ed9816129c0565b9050919050565b60006020820190508181036000830152612ef981612a00565b9050919050565b60006020820190508181036000830152612f1981612a40565b9050919050565b60006020820190508181036000830152612f3981612aa6565b9050919050565b60006020820190508181036000830152612f5981612b0c565b9050919050565b60006020820190508181036000830152612f7a8184612b4c565b905092915050565b6000602082019050612f976000830184612ba7565b92915050565b6000604082019050612fb26000830185612ba7565b612fbf6020830184612ba7565b9392505050565b6000604082019050612fdb6000830185612bb6565b612fe86020830184612624565b9392505050565b600060a0820190506130046000830188612bb6565b6130116020830187612bb6565b61301e6040830186612624565b61302b6060830185612b89565b6130386080830184612ba7565b9695505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006130b8826130d5565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006131278261312e565b9050919050565b600061313982613140565b9050919050565b600061314b826130d5565b9050919050565b60005b83811015613170578082015181840152602081019050613155565b8381111561317f576000848401525b50505050565b6000819050919050565b600061319a826131b2565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b6131c8816130ad565b81146131d357600080fd5b50565b6131df816130bf565b81146131ea57600080fd5b50565b6131f6816130cb565b811461320157600080fd5b50565b61320d816130f5565b811461321857600080fd5b50565b613224816130ff565b811461322f57600080fd5b50565b61323b8161310f565b811461324657600080fd5b5056fea2646970667358221220093e64f2de68a8ba56b15335745c5182b42d2cffc846382a42044fbb6a6793ec64736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "446:8753:1:-:0;;;714:1;697:18;;;;;;;;;;;;;;;;;;;;1770:327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1628:1:8;1743:7;:22;;;;1909:20:1;1890:13;:16;1904:1;1890:16;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2003:1;1982:18;;:22;;;;;;;;;;;;;;;;;;2027:11;2014:10;;:24;;;;;;;;;;;;;;;;;;2070:20;2049:18;;:41;;;;;;;;;;;;;;;;;;1770:327;;;446:8753;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;928:617::-;;1056:4;1044:9;1039:3;1035:19;1031:30;1028:2;;;1074:1;1071;1064:12;1028:2;1092:20;1107:4;1092:20;:::i;:::-;1083:29;;1183:1;1172:9;1168:17;1162:24;1206:18;1198:6;1195:30;1192:2;;;1238:1;1235;1228:12;1192:2;1273:85;1354:3;1345:6;1334:9;1330:22;1273:85;:::i;:::-;1266:4;1259:5;1255:16;1248:111;1122:248;1431:2;1464:59;1519:3;1510:6;1499:9;1495:22;1464:59;:::i;:::-;1457:4;1450:5;1446:16;1439:85;1380:155;1022:523;;;;:::o;1552:132::-;;1635:6;1629:13;1620:22;;1647:32;1673:5;1647:32;:::i;:::-;1614:70;;;;:::o;1691:668::-;;;;1867:2;1855:9;1846:7;1842:23;1838:32;1835:2;;;1883:1;1880;1873:12;1835:2;1939:1;1928:9;1924:17;1918:24;1962:18;1954:6;1951:30;1948:2;;;1994:1;1991;1984:12;1948:2;2014:92;2098:7;2089:6;2078:9;2074:22;2014:92;:::i;:::-;2004:102;;1897:215;2143:2;2161:64;2217:7;2208:6;2197:9;2193:22;2161:64;:::i;:::-;2151:74;;2122:109;2262:2;2280:63;2335:7;2326:6;2315:9;2311:22;2280:63;:::i;:::-;2270:73;;2241:108;1829:530;;;;;:::o;2366:256::-;;2428:2;2422:9;2412:19;;2466:4;2458:6;2454:17;2565:6;2553:10;2550:22;2529:18;2517:10;2514:34;2511:62;2508:2;;;2586:1;2583;2576:12;2508:2;2606:10;2602:2;2595:22;2406:216;;;;:::o;2629:304::-;;2788:18;2780:6;2777:30;2774:2;;;2820:1;2817;2810:12;2774:2;2855:4;2847:6;2843:17;2835:25;;2918:4;2912;2908:15;2900:23;;2711:222;;;:::o;2940:91::-;;3002:24;3020:5;3002:24;:::i;:::-;2991:35;;2985:46;;;:::o;3038:121::-;;3111:42;3104:5;3100:54;3089:65;;3083:76;;;:::o;3166:88::-;;3238:10;3231:5;3227:22;3216:33;;3210:44;;;:::o;3261:117::-;3330:24;3348:5;3330:24;:::i;:::-;3323:5;3320:35;3310:2;;3369:1;3366;3359:12;3310:2;3304:74;:::o;3385:115::-;3453:23;3470:5;3453:23;:::i;:::-;3446:5;3443:34;3433:2;;3491:1;3488;3481:12;3433:2;3427:73;:::o;446:8753:1:-;;;;;;;", "deployedSourceMap": "446:8753:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9141:54;;;;;;;;;;:::i;:::-;;;;;;;;446:8753;9056:54;;;;;;;;;;:::i;:::-;;;;;;;;7356:1204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1717:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2231:1993;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1319:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8566:458;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1501:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1411:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;629:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1663:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2103:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7356:1204;1671:1:8;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;7554:1:1::1;7544:6;:11;;7536:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7591:17;7611:8;;;;;;;;;;;7591:28;;7629:21;7664:14;:21;7679:5;7664:21;;;;;;;;;;;;;;;;;;;;;;;;;7660:765;;;7714:5;7701:24;;;7726:10;7738:6;7701:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7786:5;7773:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7759:46;;7848:5;7835:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7819:50;;7660:765;;;7900:21;7931:5;7924:23;;;7956:4;7924:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7900:62;;7976:65;8007:10;8027:4;8034:6;7983:5;7976:30;;;;:65;;;;;;:::i;:::-;8055:20;8085:5;8078:23;;;8110:4;8078:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8055:61;;8330:31;8347:13;8330:12;:16;;:31;;;;:::i;:::-;8321:40;;8407:5;8399:14;;8391:23;;8375:39;;7660:765;;;8514:10;8506:19;;8498:28;;8483:13;8440:113;8456:12;8470:11;8528:9;8539:6;8547:5;8440:113;;;;;;;;;;:::i;:::-;;;;;;;;2419:1:8;;1628::::0;2563:7;:22;;;;7356:1204:1;;;;;:::o;1717:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2231:1993::-;1671:1:8;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;2314:13:1::1;2330:14;2342:1;2330:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2314:30;;2373:1;2362:7;:12;;;2354:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2460:29;2492:15;2505:1;2492:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;2460:47;;2518:19;2540:14;2552:1;2540:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2518:36;;;;2564:11;2587;2582:2;:16;2578:1;:20;2564:34;;2643:16;2662:20;2675:6;2662:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;;:::i;:::-;2643:39;;2772:15;2759:10;;;;;;;;;;;2747:9;:22;:40;;;2739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2843:12;2868:38;2878:6;2899;2886:3;;:10;;:19;2868:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;:::i;:::-;2858:49;;;;;;2843:64;;2926:12;:18;2939:4;2926:18;;;;;;;;;;;;;;;;;;;;;2925:19;2917:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2984:31;;:::i;:::-;3018:13;:37;3032:22;3018:37;;;;;;;;;;;;;;;2984:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;3105:1;3073:12;:28;;;:33;;;:83;;;;3141:15;3110:12;:28;;;:46;;;3073:83;3065:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:11;3238:1;3234;3230;3203:12;:17;;;:24;:28;:32;;;;;;:36;:51;;3195:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3284:6;3279:373;3300:11;3296:1;:15;3279:373;;;3332:11;3346:23;3366:2;3362:1;:6;3358:1;:10;3346:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3332:37;;3383:9;3395:25;3417:2;3413:1;:6;3409:1;:10;3395:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;3383:37;;3434:9;3446:26;3469:2;3465:1;:6;3460:2;:11;3446:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;3434:38;;3486:7;3496:24;3517:2;3513:1;:6;3508:2;:11;3496:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;3486:34;;3539:2;3534:7;;;;3591:12;:17;;;3609:5;3591:24;;;;;;;;;;;;;;;;3563:52;;:24;3573:4;3579:1;3582;3585;3563:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;:52;;;3555:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;3279:373;;;;3313:3;;;;;;;3279:373;;;;3662:12;3677:23;3698:1;3689:6;:10;3677:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3662:38;;3710:20;3733:48;3752:1;3743:6;:10;3778:1;3769:6;:10;3755:3;;:10;;:25;3733:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;:::i;:::-;3710:71;;3829:4;3819:6;:14;;;3815:332;;;3883:18;;;;;;;;;;;3857:44;;:22;:44;;;3849:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;3977:29;3998:7;3977:20;:29::i;:::-;3815:332;;;4037:4;4027:6;:14;;;4023:124;;;4057:20;4069:7;4057:11;:20::i;:::-;4023:124;;;4108:28;;;;;;;;;;:::i;:::-;;;;;;;;4023:124;3815:332;4213:4;4192:12;:18;4205:4;4192:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;2419:1:8;;;;;;;;;1628::::0;2563:7;:22;;;;2231:1993:1;;:::o;1319:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8566:458::-;1671:1:8;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;8725:1:1::1;8712:9;:14;;8704:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;798:42;8795:25;;;8829:9;8795:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;8975:10;8967:19;;8959:28;;798:42;8936:20;;8928:29;;8888:129;8904:12;8918:8;;;;;;;;;;;8989:9;9000;9011:5;8888:129;;;;;;;;;;:::i;:::-;;;;;;;;1628:1:8::0;2563:7;:22;;;;8566:458:1;;;:::o;1501:24::-;;;;;;;;;;;;;:::o;1411:32::-;;;;;;;;;;;;;:::o;629:33::-;;;;;;;;;;;;;:::o;1663:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2103:122::-;2160:21;;:::i;:::-;2200:13;:18;2214:3;2200:18;;;;;;;;;;;;;;;2193:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:122;;;:::o;877:203:6:-;977:96;997:5;1027:27;;;1056:4;1062:2;1066:5;1004:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:19;:96::i;:::-;877:203;;;;:::o;1321:134:4:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;11710:302:0:-;11787:5;11839:1;11830:6;:10;11812:6;:13;:29;;11804:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:14;11962:6;11956:3;11948:6;11944:16;11940:29;11934:36;11922:48;;11997:8;11990:15;;;11710:302;;;;:::o;12329:305::-;12407:6;12460:1;12451:6;:10;12433:6;:13;:29;;12425:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12495:15;12584:6;12578:3;12570:6;12566:16;12562:29;12556:36;12544:48;;12619:8;12612:15;;;12329:305;;;;:::o;8865:2480::-;8999:12;9062:7;9053:6;:16;9035:6;:13;:35;;9027:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9104:22;9174:7;9167:15;9200:1;9195:1895;;;;11231:4;11225:11;11212:24;;11282:4;11271:9;11267:20;11261:4;11254:34;9160:2142;;9195:1895;9369:4;9363:11;9350:24;;9996:2;9987:7;9983:16;10362:9;10355:17;10349:4;10345:28;10333:9;10322;10318:25;10314:60;10410:7;10406:2;10402:16;10654:6;10640:9;10633:17;10627:4;10623:28;10611:9;10603:6;10599:22;10595:57;10591:70;10436:417;10687:3;10683:2;10680:11;10436:417;;;10831:2;10825:9;10821:2;10814:21;10728:4;10724:2;10720:13;10714:19;;10768:4;10764:2;10760:13;10754:19;;10436:417;;;10440:239;10889:7;10878:9;10871:26;11071:2;11067:7;11062:2;11058;11054:11;11050:25;11044:4;11037:39;9202:1888;;;9160:2142;;11329:9;11322:16;;;8865:2480;;;;;:::o;13895:319::-;13974:7;14028:2;14019:6;:11;14001:6;:13;:30;;13993:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14064:19;14161:6;14154:4;14146:6;14142:17;14138:30;14132:37;14117:52;;14196:11;14189:18;;;13895:319;;;;:::o;4230:801:1:-;4297:29;4329:16;4343:1;4329:4;:13;;:16;;;;:::i;:::-;4297:48;;4355:9;4367:15;4380:1;4367:4;:12;;:15;;;;:::i;:::-;4355:27;;4393:30;4440:3;4426:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4393:51;;4459:6;4454:134;4475:3;4471:7;;:1;:7;4454:134;;;4499:12;4514:26;4537:2;4533:1;:6;4529:1;:10;4514:4;:14;;:26;;;;:::i;:::-;4499:41;;4573:4;4554:13;4568:1;4554:16;;;;;;;;;;;;;:23;;;;;;;;;;;4454:134;4480:3;;;;;;;4454:134;;;;4598:29;4630:18;;;;;;;;;;;4598:50;;4679:22;4658:18;;:43;;;;;;;;;;;;;;;;;;4712:35;;:::i;:::-;4750:29;;;;;;;;4762:13;4750:29;;;;4777:1;4750:29;;;;;4712:67;;4825:16;4789:13;:33;4803:18;;;;;;;;;;;4789:33;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4933:10;;;;;;;;;;;4914:15;4907:36;4851:13;:37;4865:22;4851:37;;;;;;;;;;;;;;;:53;;;:92;;;;;;;;;;;;;;;;;;4959:65;4981:22;5005:18;;;;;;;;;;;4959:65;;;;;;;:::i;:::-;;;;;;;;4230:801;;;;;;:::o;5037:1373::-;5138:18;5159:15;5172:1;5159:4;:12;;:15;;;;:::i;:::-;5138:36;;5185:18;5206:15;5219:1;5206:4;:12;;:15;;;;:::i;:::-;5185:36;;5340:22;5365:23;5380:7;5365:4;:14;;:23;;;;:::i;:::-;5340:48;;5399:17;5419:16;5432:2;5419:4;:12;;:16;;;;:::i;:::-;5399:36;;5499:14;5516:19;5531:3;5516:4;:14;;:19;;;;:::i;:::-;5499:36;;5570:12;5554:28;;:12;:28;;;;5546:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5659:8;;;;;;;;;;;5643:24;;:12;:24;;;5635:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5727:8;;;;;;;;;;;5712:23;;:11;:23;;;5708:696;;5751:21;5775:18;5790:2;5775:4;:14;;:18;;;;:::i;:::-;5751:42;;5807:16;5853:11;5866:13;5836:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5826:55;;;;;;5807:74;;5973:21;5997:13;:23;6011:8;5997:23;;;;;;;;;;;;;;;;;;;;;5973:47;;6063:1;6038:27;;:13;:27;;;6034:138;;;6101:56;6120:8;6130:11;6143:13;6101:18;:56::i;:::-;6085:72;;6034:138;6199:13;6186:32;;;6219:14;6235:6;6186:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5708:696;;;;;;6273:21;6297:23;6312:7;6297:4;:14;;:23;;;;:::i;:::-;6273:47;;6335:58;6370:14;6386:6;6342:13;6335:34;;;;:58;;;;;:::i;:::-;5708:696;;5037:1373;;;;;;:::o;2959:751:6:-;3378:23;3404:69;3432:4;3404:69;;;;;;;;;;;;;;;;;3412:5;3404:27;;;;:69;;;;;:::i;:::-;3378:95;;3507:1;3487:10;:17;:21;3483:221;;;3627:10;3616:30;;;;;;;;;;;;:::i;:::-;3608:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3483:221;2959:751;;;:::o;1746:187:4:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;11351:353:0:-;11430:7;11484:2;11475:6;:11;11457:6;:13;:30;;11449:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:19;11631:27;11621:6;11614:4;11606:6;11602:17;11598:30;11592:37;11588:71;11573:86;;11686:11;11679:18;;;11351:353;;;;:::o;13579:310::-;13658:7;13712:2;13703:6;:11;13685:6;:13;:30;;13677:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13748:16;13839:6;13832:4;13824:6;13820:17;13816:30;13810:37;13798:49;;13874:8;13867:15;;;13579:310;;;;:::o;6416:906:1:-;6517:13;6709:19;6739:18;;;;;;;;;;;6731:27;;6709:49;;6810:4;6804:11;6842:66;6835:5;6828:81;6947:11;6940:4;6933:5;6929:16;6922:37;6997:66;6990:4;6983:5;6979:16;6972:92;7103:4;7096:5;7093:1;7086:22;7077:31;;6777:341;7169:5;7156:30;;;7187:11;7200:13;7156:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7272:5;7250:13;:19;7264:4;7250:19;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7311:4;7287:14;:21;7302:5;7287:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;6416:906;;;;;;:::o;696:175:6:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:19;:86::i;:::-;696:175;;;:::o;3770:194:7:-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;5117:958::-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;:::i;:::-;;;;;;;;5117:958;;;;;;;:::o;718:610::-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:128::-;;223:6;217:13;208:22;;235:30;259:5;235:30;:::i;:::-;202:68;;;;:::o;277:130::-;;357:6;344:20;335:29;;369:33;396:5;369:33;:::i;:::-;329:78;;;;:::o;414:134::-;;498:6;492:13;483:22;;510:33;537:5;510:33;:::i;:::-;477:71;;;;:::o;569:336::-;;;683:3;676:4;668:6;664:17;660:27;650:2;;701:1;698;691:12;650:2;734:6;721:20;711:30;;761:18;753:6;750:30;747:2;;;793:1;790;783:12;747:2;827:4;819:6;815:17;803:29;;878:3;870:4;862:6;858:17;848:8;844:32;841:41;838:2;;;895:1;892;885:12;838:2;643:262;;;;;:::o;913:130::-;;993:6;980:20;971:29;;1005:33;1032:5;1005:33;:::i;:::-;965:78;;;;:::o;1050:134::-;;1134:6;1128:13;1119:22;;1146:33;1173:5;1146:33;:::i;:::-;1113:71;;;;:::o;1191:128::-;;1270:6;1257:20;1248:29;;1282:32;1308:5;1282:32;:::i;:::-;1242:77;;;;:::o;1326:126::-;;1404:6;1391:20;1382:29;;1416:31;1441:5;1416:31;:::i;:::-;1376:76;;;;:::o;1459:130::-;;1541:6;1535:13;1526:22;;1553:31;1578:5;1553:31;:::i;:::-;1520:69;;;;:::o;1596:241::-;;1700:2;1688:9;1679:7;1675:23;1671:32;1668:2;;;1716:1;1713;1706:12;1668:2;1751:1;1768:53;1813:7;1804:6;1793:9;1789:22;1768:53;:::i;:::-;1758:63;;1730:97;1662:175;;;;:::o;1844:737::-;;;;;;2013:3;2001:9;1992:7;1988:23;1984:33;1981:2;;;2030:1;2027;2020:12;1981:2;2065:1;2082:53;2127:7;2118:6;2107:9;2103:22;2082:53;:::i;:::-;2072:63;;2044:97;2172:2;2190:53;2235:7;2226:6;2215:9;2211:22;2190:53;:::i;:::-;2180:63;;2151:98;2280:2;2298:53;2343:7;2334:6;2323:9;2319:22;2298:53;:::i;:::-;2288:63;;2259:98;2388:2;2406:51;2449:7;2440:6;2429:9;2425:22;2406:51;:::i;:::-;2396:61;;2367:96;2494:3;2513:52;2557:7;2548:6;2537:9;2533:22;2513:52;:::i;:::-;2503:62;;2473:98;1975:606;;;;;;;;:::o;2588:257::-;;2700:2;2688:9;2679:7;2675:23;2671:32;2668:2;;;2716:1;2713;2706:12;2668:2;2751:1;2768:61;2821:7;2812:6;2801:9;2797:22;2768:61;:::i;:::-;2758:71;;2730:105;2662:183;;;;:::o;2852:241::-;;2956:2;2944:9;2935:7;2931:23;2927:32;2924:2;;;2972:1;2969;2962:12;2924:2;3007:1;3024:53;3069:7;3060:6;3049:9;3045:22;3024:53;:::i;:::-;3014:63;;2986:97;2918:175;;;;:::o;3100:263::-;;3215:2;3203:9;3194:7;3190:23;3186:32;3183:2;;;3231:1;3228;3221:12;3183:2;3266:1;3283:64;3339:7;3330:6;3319:9;3315:22;3283:64;:::i;:::-;3273:74;;3245:108;3177:186;;;;:::o;3370:485::-;;;;3505:2;3493:9;3484:7;3480:23;3476:32;3473:2;;;3521:1;3518;3511:12;3473:2;3556:1;3573:53;3618:7;3609:6;3598:9;3594:22;3573:53;:::i;:::-;3563:63;;3535:97;3663:2;3681:51;3724:7;3715:6;3704:9;3700:22;3681:51;:::i;:::-;3671:61;;3642:96;3769:2;3787:52;3831:7;3822:6;3811:9;3807:22;3787:52;:::i;:::-;3777:62;;3748:97;3467:388;;;;;:::o;3862:365::-;;;3985:2;3973:9;3964:7;3960:23;3956:32;3953:2;;;4001:1;3998;3991:12;3953:2;4064:1;4053:9;4049:17;4036:31;4087:18;4079:6;4076:30;4073:2;;;4119:1;4116;4109:12;4073:2;4147:64;4203:7;4194:6;4183:9;4179:22;4147:64;:::i;:::-;4129:82;;;;4015:202;3947:280;;;;;:::o;4234:263::-;;4349:2;4337:9;4328:7;4324:23;4320:32;4317:2;;;4365:1;4362;4355:12;4317:2;4400:1;4417:64;4473:7;4464:6;4453:9;4449:22;4417:64;:::i;:::-;4407:74;;4379:108;4311:186;;;;:::o;4504:239::-;;4607:2;4595:9;4586:7;4582:23;4578:32;4575:2;;;4623:1;4620;4613:12;4575:2;4658:1;4675:52;4719:7;4710:6;4699:9;4695:22;4675:52;:::i;:::-;4665:62;;4637:96;4569:174;;;;:::o;4750:259::-;;4863:2;4851:9;4842:7;4838:23;4834:32;4831:2;;;4879:1;4876;4869:12;4831:2;4914:1;4931:62;4985:7;4976:6;4965:9;4961:22;4931:62;:::i;:::-;4921:72;;4893:106;4825:184;;;;:::o;5017:173::-;;5104:46;5146:3;5138:6;5104:46;:::i;:::-;5179:4;5174:3;5170:14;5156:28;;5097:93;;;;:::o;5198:142::-;5289:45;5328:5;5289:45;:::i;:::-;5284:3;5277:58;5271:69;;:::o;5347:103::-;5420:24;5438:5;5420:24;:::i;:::-;5415:3;5408:37;5402:48;;:::o;5457:113::-;5540:24;5558:5;5540:24;:::i;:::-;5535:3;5528:37;5522:48;;:::o;5608:670::-;;5743:54;5791:5;5743:54;:::i;:::-;5810:76;5879:6;5874:3;5810:76;:::i;:::-;5803:83;;5907:56;5957:5;5907:56;:::i;:::-;5983:7;6011:1;5996:260;6021:6;6018:1;6015:13;5996:260;;;6088:6;6082:13;6109:63;6168:3;6153:13;6109:63;:::i;:::-;6102:70;;6189:60;6242:6;6189:60;:::i;:::-;6179:70;;6053:203;6043:1;6040;6036:9;6031:14;;5996:260;;;6000:14;6269:3;6262:10;;5722:556;;;;;;;:::o;6286:104::-;6363:21;6378:5;6363:21;:::i;:::-;6358:3;6351:34;6345:45;;:::o;6397:113::-;6480:24;6498:5;6480:24;:::i;:::-;6475:3;6468:37;6462:48;;:::o;6517:152::-;6618:45;6638:24;6656:5;6638:24;:::i;:::-;6618:45;:::i;:::-;6613:3;6606:58;6600:69;;:::o;6676:356::-;;6804:38;6836:5;6804:38;:::i;:::-;6854:88;6935:6;6930:3;6854:88;:::i;:::-;6847:95;;6947:52;6992:6;6987:3;6980:4;6973:5;6969:16;6947:52;:::i;:::-;7020:6;7015:3;7011:16;7004:23;;6784:248;;;;;:::o;7039:347::-;;7151:39;7184:5;7151:39;:::i;:::-;7202:71;7266:6;7261:3;7202:71;:::i;:::-;7195:78;;7278:52;7323:6;7318:3;7311:4;7304:5;7300:16;7278:52;:::i;:::-;7351:29;7373:6;7351:29;:::i;:::-;7346:3;7342:39;7335:46;;7131:255;;;;;:::o;7394:318::-;;7554:67;7618:2;7613:3;7554:67;:::i;:::-;7547:74;;7654:20;7650:1;7645:3;7641:11;7634:41;7703:2;7698:3;7694:12;7687:19;;7540:172;;;:::o;7721:324::-;;7881:67;7945:2;7940:3;7881:67;:::i;:::-;7874:74;;7981:26;7977:1;7972:3;7968:11;7961:47;8036:2;8031:3;8027:12;8020:19;;7867:178;;;:::o;8054:381::-;;8214:67;8278:2;8273:3;8214:67;:::i;:::-;8207:74;;8314:34;8310:1;8305:3;8301:11;8294:55;8383:14;8378:2;8373:3;8369:12;8362:36;8426:2;8421:3;8417:12;8410:19;;8200:235;;;:::o;8444:394::-;;8604:67;8668:2;8663:3;8604:67;:::i;:::-;8597:74;;8704:34;8700:1;8695:3;8691:11;8684:55;8773:27;8768:2;8763:3;8759:12;8752:49;8829:2;8824:3;8820:12;8813:19;;8590:248;;;:::o;8847:318::-;;9007:67;9071:2;9066:3;9007:67;:::i;:::-;9000:74;;9107:20;9103:1;9098:3;9094:11;9087:41;9156:2;9151:3;9147:12;9140:19;;8993:172;;;:::o;9174:324::-;;9334:67;9398:2;9393:3;9334:67;:::i;:::-;9327:74;;9434:26;9430:1;9425:3;9421:11;9414:47;9489:2;9484:3;9480:12;9473:19;;9320:178;;;:::o;9507:315::-;;9667:67;9731:2;9726:3;9667:67;:::i;:::-;9660:74;;9767:17;9763:1;9758:3;9754:11;9747:38;9813:2;9808:3;9804:12;9797:19;;9653:169;;;:::o;9831:321::-;;9991:67;10055:2;10050:3;9991:67;:::i;:::-;9984:74;;10091:23;10087:1;10082:3;10078:11;10071:44;10143:2;10138:3;10134:12;10127:19;;9977:175;;;:::o;10161:308::-;;10321:66;10385:1;10380:3;10321:66;:::i;:::-;10314:73;;10420:11;10416:1;10411:3;10407:11;10400:32;10460:2;10455:3;10451:12;10444:19;;10307:162;;;:::o;10478:320::-;;10638:67;10702:2;10697:3;10638:67;:::i;:::-;10631:74;;10738:22;10734:1;10729:3;10725:11;10718:43;10789:2;10784:3;10780:12;10773:19;;10624:174;;;:::o;10807:325::-;;10967:67;11031:2;11026:3;10967:67;:::i;:::-;10960:74;;11067:27;11063:1;11058:3;11054:11;11047:48;11123:2;11118:3;11114:12;11107:19;;10953:179;;;:::o;11141:324::-;;11301:67;11365:2;11360:3;11301:67;:::i;:::-;11294:74;;11401:26;11397:1;11392:3;11388:11;11381:47;11456:2;11451:3;11447:12;11440:19;;11287:178;;;:::o;11474:329::-;;11634:67;11698:2;11693:3;11634:67;:::i;:::-;11627:74;;11734:31;11730:1;11725:3;11721:11;11714:52;11794:2;11789:3;11785:12;11778:19;;11620:183;;;:::o;11812:379::-;;11972:67;12036:2;12031:3;11972:67;:::i;:::-;11965:74;;12072:34;12068:1;12063:3;12059:11;12052:55;12141:12;12136:2;12131:3;12127:12;12120:34;12182:2;12177:3;12173:12;12166:19;;11958:233;;;:::o;12200:375::-;;12360:67;12424:2;12419:3;12360:67;:::i;:::-;12353:74;;12460:34;12456:1;12451:3;12447:11;12440:55;12529:8;12524:2;12519:3;12515:12;12508:30;12566:2;12561:3;12557:12;12550:19;;12346:229;;;:::o;12584:331::-;;12744:67;12808:2;12803:3;12744:67;:::i;:::-;12737:74;;12844:33;12840:1;12835:3;12831:11;12824:54;12906:2;12901:3;12897:12;12890:19;;12730:185;;;:::o;12988:616::-;;13145:4;13140:3;13136:14;13228:4;13221:5;13217:16;13211:23;13280:3;13274:4;13270:14;13263:4;13258:3;13254:14;13247:38;13300:103;13398:4;13384:12;13300:103;:::i;:::-;13292:111;;13165:250;13499:4;13492:5;13488:16;13482:23;13511:61;13566:4;13561:3;13557:14;13543:12;13511:61;:::i;:::-;13425:153;13595:4;13588:11;;13118:486;;;;;:::o;13611:113::-;13694:24;13712:5;13694:24;:::i;:::-;13689:3;13682:37;13676:48;;:::o;13731:100::-;13802:23;13819:5;13802:23;:::i;:::-;13797:3;13790:36;13784:47;;:::o;13838:110::-;13919:23;13936:5;13919:23;:::i;:::-;13914:3;13907:36;13901:47;;:::o;13955:107::-;14034:22;14050:5;14034:22;:::i;:::-;14029:3;14022:35;14016:46;;:::o;14069:144::-;14166:41;14184:22;14200:5;14184:22;:::i;:::-;14166:41;:::i;:::-;14161:3;14154:54;14148:65;;:::o;14220:271::-;;14373:93;14462:3;14453:6;14373:93;:::i;:::-;14366:100;;14483:3;14476:10;;14354:137;;;;:::o;14498:383::-;;14650:71;14717:3;14708:6;14650:71;:::i;:::-;14743:1;14738:3;14734:11;14727:18;;14756:75;14827:3;14818:6;14756:75;:::i;:::-;14853:2;14848:3;14844:12;14837:19;;14873:3;14866:10;;14638:243;;;;;:::o;14888:222::-;;15015:2;15004:9;15000:18;14992:26;;15029:71;15097:1;15086:9;15082:17;15073:6;15029:71;:::i;:::-;14986:124;;;;:::o;15117:238::-;;15252:2;15241:9;15237:18;15229:26;;15266:79;15342:1;15331:9;15327:17;15318:6;15266:79;:::i;:::-;15223:132;;;;:::o;15362:349::-;;15525:2;15514:9;15510:18;15502:26;;15539:79;15615:1;15604:9;15600:17;15591:6;15539:79;:::i;:::-;15629:72;15697:2;15686:9;15682:18;15673:6;15629:72;:::i;:::-;15496:215;;;;;:::o;15718:444::-;;15901:2;15890:9;15886:18;15878:26;;15915:71;15983:1;15972:9;15968:17;15959:6;15915:71;:::i;:::-;15997:72;16065:2;16054:9;16050:18;16041:6;15997:72;:::i;:::-;16080;16148:2;16137:9;16133:18;16124:6;16080:72;:::i;:::-;15872:290;;;;;;:::o;16169:333::-;;16324:2;16313:9;16309:18;16301:26;;16338:71;16406:1;16395:9;16391:17;16382:6;16338:71;:::i;:::-;16420:72;16488:2;16477:9;16473:18;16464:6;16420:72;:::i;:::-;16295:207;;;;;:::o;16509:210::-;;16630:2;16619:9;16615:18;16607:26;;16644:65;16706:1;16695:9;16691:17;16682:6;16644:65;:::i;:::-;16601:118;;;;:::o;16726:548::-;;16933:3;16922:9;16918:19;16910:27;;16948:71;17016:1;17005:9;17001:17;16992:6;16948:71;:::i;:::-;17030:68;17094:2;17083:9;17079:18;17070:6;17030:68;:::i;:::-;17109:72;17177:2;17166:9;17162:18;17153:6;17109:72;:::i;:::-;17192;17260:2;17249:9;17245:18;17236:6;17192:72;:::i;:::-;16904:370;;;;;;;:::o;17281:310::-;;17428:2;17417:9;17413:18;17405:26;;17478:9;17472:4;17468:20;17464:1;17453:9;17449:17;17442:47;17503:78;17576:4;17567:6;17503:78;:::i;:::-;17495:86;;17399:192;;;;:::o;17598:416::-;;17798:2;17787:9;17783:18;17775:26;;17848:9;17842:4;17838:20;17834:1;17823:9;17819:17;17812:47;17873:131;17999:4;17873:131;:::i;:::-;17865:139;;17769:245;;;:::o;18021:416::-;;18221:2;18210:9;18206:18;18198:26;;18271:9;18265:4;18261:20;18257:1;18246:9;18242:17;18235:47;18296:131;18422:4;18296:131;:::i;:::-;18288:139;;18192:245;;;:::o;18444:416::-;;18644:2;18633:9;18629:18;18621:26;;18694:9;18688:4;18684:20;18680:1;18669:9;18665:17;18658:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18615:245;;;:::o;18867:416::-;;19067:2;19056:9;19052:18;19044:26;;19117:9;19111:4;19107:20;19103:1;19092:9;19088:17;19081:47;19142:131;19268:4;19142:131;:::i;:::-;19134:139;;19038:245;;;:::o;19290:416::-;;19490:2;19479:9;19475:18;19467:26;;19540:9;19534:4;19530:20;19526:1;19515:9;19511:17;19504:47;19565:131;19691:4;19565:131;:::i;:::-;19557:139;;19461:245;;;:::o;19713:416::-;;19913:2;19902:9;19898:18;19890:26;;19963:9;19957:4;19953:20;19949:1;19938:9;19934:17;19927:47;19988:131;20114:4;19988:131;:::i;:::-;19980:139;;19884:245;;;:::o;20136:416::-;;20336:2;20325:9;20321:18;20313:26;;20386:9;20380:4;20376:20;20372:1;20361:9;20357:17;20350:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20307:245;;;:::o;20559:416::-;;20759:2;20748:9;20744:18;20736:26;;20809:9;20803:4;20799:20;20795:1;20784:9;20780:17;20773:47;20834:131;20960:4;20834:131;:::i;:::-;20826:139;;20730:245;;;:::o;20982:416::-;;21182:2;21171:9;21167:18;21159:26;;21232:9;21226:4;21222:20;21218:1;21207:9;21203:17;21196:47;21257:131;21383:4;21257:131;:::i;:::-;21249:139;;21153:245;;;:::o;21405:416::-;;21605:2;21594:9;21590:18;21582:26;;21655:9;21649:4;21645:20;21641:1;21630:9;21626:17;21619:47;21680:131;21806:4;21680:131;:::i;:::-;21672:139;;21576:245;;;:::o;21828:416::-;;22028:2;22017:9;22013:18;22005:26;;22078:9;22072:4;22068:20;22064:1;22053:9;22049:17;22042:47;22103:131;22229:4;22103:131;:::i;:::-;22095:139;;21999:245;;;:::o;22251:416::-;;22451:2;22440:9;22436:18;22428:26;;22501:9;22495:4;22491:20;22487:1;22476:9;22472:17;22465:47;22526:131;22652:4;22526:131;:::i;:::-;22518:139;;22422:245;;;:::o;22674:416::-;;22874:2;22863:9;22859:18;22851:26;;22924:9;22918:4;22914:20;22910:1;22899:9;22895:17;22888:47;22949:131;23075:4;22949:131;:::i;:::-;22941:139;;22845:245;;;:::o;23097:416::-;;23297:2;23286:9;23282:18;23274:26;;23347:9;23341:4;23337:20;23333:1;23322:9;23318:17;23311:47;23372:131;23498:4;23372:131;:::i;:::-;23364:139;;23268:245;;;:::o;23520:416::-;;23720:2;23709:9;23705:18;23697:26;;23770:9;23764:4;23760:20;23756:1;23745:9;23741:17;23734:47;23795:131;23921:4;23795:131;:::i;:::-;23787:139;;23691:245;;;:::o;23943:416::-;;24143:2;24132:9;24128:18;24120:26;;24193:9;24187:4;24183:20;24179:1;24168:9;24164:17;24157:47;24218:131;24344:4;24218:131;:::i;:::-;24210:139;;24114:245;;;:::o;24366:382::-;;24549:2;24538:9;24534:18;24526:26;;24599:9;24593:4;24589:20;24585:1;24574:9;24570:17;24563:47;24624:114;24733:4;24724:6;24624:114;:::i;:::-;24616:122;;24520:228;;;;:::o;24755:218::-;;24880:2;24869:9;24865:18;24857:26;;24894:69;24960:1;24949:9;24945:17;24936:6;24894:69;:::i;:::-;24851:122;;;;:::o;24980:325::-;;25131:2;25120:9;25116:18;25108:26;;25145:69;25211:1;25200:9;25196:17;25187:6;25145:69;:::i;:::-;25225:70;25291:2;25280:9;25276:18;25267:6;25225:70;:::i;:::-;25102:203;;;;;:::o;25312:325::-;;25463:2;25452:9;25448:18;25440:26;;25477:67;25541:1;25530:9;25526:17;25517:6;25477:67;:::i;:::-;25555:72;25623:2;25612:9;25608:18;25599:6;25555:72;:::i;:::-;25434:203;;;;;:::o;25644:648::-;;25873:3;25862:9;25858:19;25850:27;;25888:67;25952:1;25941:9;25937:17;25928:6;25888:67;:::i;:::-;25966:68;26030:2;26019:9;26015:18;26006:6;25966:68;:::i;:::-;26045:72;26113:2;26102:9;26098:18;26089:6;26045:72;:::i;:::-;26128;26196:2;26185:9;26181:18;26172:6;26128:72;:::i;:::-;26211:71;26277:3;26266:9;26262:19;26253:6;26211:71;:::i;:::-;25844:448;;;;;;;;:::o;26299:151::-;;26385:3;26377:11;;26423:4;26418:3;26414:14;26406:22;;26371:79;;;:::o;26457:137::-;;26566:5;26560:12;26550:22;;26531:63;;;:::o;26601:121::-;;26694:5;26688:12;26678:22;;26659:63;;;:::o;26729:122::-;;26823:5;26817:12;26807:22;;26788:63;;;:::o;26858:108::-;;26956:4;26951:3;26947:14;26939:22;;26933:33;;;:::o;26974:168::-;;27094:6;27089:3;27082:19;27131:4;27126:3;27122:14;27107:29;;27075:67;;;;:::o;27151:144::-;;27286:3;27271:18;;27264:31;;;;:::o;27304:163::-;;27419:6;27414:3;27407:19;27456:4;27451:3;27447:14;27432:29;;27400:67;;;;:::o;27475:91::-;;27537:24;27555:5;27537:24;:::i;:::-;27526:35;;27520:46;;;:::o;27573:85::-;;27646:5;27639:13;27632:21;27621:32;;27615:43;;;:::o;27665:72::-;;27727:5;27716:16;;27710:27;;;:::o;27744:121::-;;27817:42;27810:5;27806:54;27795:65;;27789:76;;;:::o;27872:72::-;;27934:5;27923:16;;27917:27;;;:::o;27951:88::-;;28023:10;28016:5;28012:22;28001:33;;27995:44;;;:::o;28046:81::-;;28117:4;28110:5;28106:16;28095:27;;28089:38;;;:::o;28134:129::-;;28221:37;28252:5;28221:37;:::i;:::-;28208:50;;28202:61;;;:::o;28270:121::-;;28349:37;28380:5;28349:37;:::i;:::-;28336:50;;28330:61;;;:::o;28398:108::-;;28477:24;28495:5;28477:24;:::i;:::-;28464:37;;28458:48;;;:::o;28514:268::-;28579:1;28586:101;28600:6;28597:1;28594:13;28586:101;;;28676:1;28671:3;28667:11;28661:18;28657:1;28652:3;28648:11;28641:39;28622:2;28619:1;28615:10;28610:15;;28586:101;;;28702:6;28699:1;28696:13;28693:2;;;28767:1;28758:6;28753:3;28749:16;28742:27;28693:2;28563:219;;;;:::o;28790:74::-;;28854:5;28843:16;;28837:27;;;:::o;28871:88::-;;28933:21;28948:5;28933:21;:::i;:::-;28922:32;;28916:43;;;:::o;28966:97::-;;29054:2;29050:7;29045:2;29038:5;29034:14;29030:28;29020:38;;29014:49;;;:::o;29071:96::-;;29151:5;29146:3;29142:15;29120:37;;29114:53;;;:::o;29175:117::-;29244:24;29262:5;29244:24;:::i;:::-;29237:5;29234:35;29224:2;;29283:1;29280;29273:12;29224:2;29218:74;:::o;29299:111::-;29365:21;29380:5;29365:21;:::i;:::-;29358:5;29355:32;29345:2;;29401:1;29398;29391:12;29345:2;29339:71;:::o;29417:117::-;29486:24;29504:5;29486:24;:::i;:::-;29479:5;29476:35;29466:2;;29525:1;29522;29515:12;29466:2;29460:74;:::o;29541:117::-;29610:24;29628:5;29610:24;:::i;:::-;29603:5;29600:35;29590:2;;29649:1;29646;29639:12;29590:2;29584:74;:::o;29665:115::-;29733:23;29750:5;29733:23;:::i;:::-;29726:5;29723:34;29713:2;;29771:1;29768;29761:12;29713:2;29707:73;:::o;29787:113::-;29854:22;29870:5;29854:22;:::i;:::-;29847:5;29844:33;29834:2;;29891:1;29888;29881:12;29834:2;29828:72;:::o", "source": "// contracts/Wormhole.sol\n// SPDX-License-Identifier: Apache 2\n\n// TODO(hendrik): switch-over feature\n\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport \"./BytesLib.sol\";\nimport \"./WrappedAsset.sol\";\n\ncontract Wormhole is ReentrancyGuard {\n using SafeERC20 for IERC20;\n using BytesLib for bytes;\n using SafeMath for uint256;\n\n // Address of the Wrapped asset template\n address public wrappedAssetMaster;\n\n // Chain ID of Ethereum\n uint8 CHAIN_ID = 2;\n\n // Address of the official WETH contract\n address constant WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\n\n struct GuardianSet {\n address[] keys;\n uint32 expiration_time;\n }\n\n event LogGuardianSetChanged(\n uint32 oldGuardianIndex,\n uint32 newGuardianIndex\n );\n\n event LogTokensLocked(\n uint8 target_chain,\n uint8 token_chain,\n bytes32 indexed token,\n bytes32 indexed sender,\n bytes32 recipient,\n uint256 amount,\n uint32 nonce\n );\n\n // Mapping of guardian_set_index => guardian set\n mapping(uint32 => GuardianSet) public guardian_sets;\n // Current active guardian set\n uint32 public guardian_set_index;\n\n // Period for which an vaa is valid in seconds\n uint32 public vaa_expiry;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) consumedVAAs;\n\n // Mapping of wrapped asset ERC20 contracts\n mapping(bytes32 => address) public wrappedAssets;\n mapping(address => bool) public isWrappedAsset;\n\n constructor(GuardianSet memory initial_guardian_set, address wrapped_asset_master, uint32 _vaa_expiry) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n vaa_expiry = _vaa_expiry;\n\n wrappedAssetMaster = wrapped_asset_master;\n }\n\n function getGuardianSet(uint32 idx) view public returns (GuardianSet memory gs) {\n return guardian_sets[idx];\n }\n\n function submitVAA(\n bytes calldata vaa\n ) public nonReentrant {\n uint8 version = vaa.toUint8(0);\n require(version == 1, \"VAA version incompatible\");\n\n // Load 4 bytes starting from index 1\n uint32 vaa_guardian_set_index = vaa.toUint32(1);\n\n uint256 len_signers = vaa.toUint8(5);\n uint offset = 6 + 66 * len_signers;\n\n // Load 4 bytes timestamp\n uint32 timestamp = vaa.toUint32(offset);\n\n // Verify that the VAA is still valid\n require(timestamp + vaa_expiry > block.timestamp, \"VAA has expired\");\n\n // Hash the body\n bytes32 hash = keccak256(vaa.slice(offset, vaa.length - offset));\n require(!consumedVAAs[hash], \"VAA was already executed\");\n\n GuardianSet memory guardian_set = guardian_sets[vaa_guardian_set_index];\n require(guardian_set.expiration_time == 0 || guardian_set.expiration_time > block.timestamp, \"guardian set has expired\");\n require(guardian_set.keys.length * 3 / 4 + 1 <= len_signers, \"no quorum\");\n\n for (uint i = 0; i < len_signers; i++) {\n uint8 index = vaa.toUint8(6 + i * 66);\n bytes32 r = vaa.toBytes32(7 + i * 66);\n bytes32 s = vaa.toBytes32(39 + i * 66);\n uint8 v = vaa.toUint8(71 + i * 66);\n v += 27;\n require(ecrecover(hash, v, r, s) == guardian_set.keys[index], \"VAA signature invalid\");\n }\n\n uint8 action = vaa.toUint8(offset + 4);\n bytes memory payload = vaa.slice(offset + 5, vaa.length - (offset + 5));\n\n // Process VAA\n if (action == 0x01) {\n require(vaa_guardian_set_index == guardian_set_index, \"only the current guardian set can change the guardian set\");\n vaaUpdateGuardianSet(payload);\n } else if (action == 0x10) {\n vaaTransfer(payload);\n } else {\n revert(\"invalid VAA action\");\n }\n\n // Set the VAA as consumed\n consumedVAAs[hash] = true;\n }\n\n function vaaUpdateGuardianSet(bytes memory data) private {\n uint32 new_guardian_set_index = data.toUint32(0);\n uint8 len = data.toUint8(4);\n\n address[] memory new_guardians = new address[](len);\n for (uint i = 0; i < len; i++) {\n address addr = data.toAddress(5 + i * 20);\n new_guardians[i] = addr;\n }\n\n uint32 old_guardian_set_index = guardian_set_index;\n guardian_set_index = new_guardian_set_index;\n\n GuardianSet memory new_guardian_set = GuardianSet(new_guardians, 0);\n guardian_sets[guardian_set_index] = new_guardian_set;\n guardian_sets[old_guardian_set_index].expiration_time = uint32(block.timestamp) + vaa_expiry;\n\n emit LogGuardianSetChanged(old_guardian_set_index, guardian_set_index);\n }\n\n function vaaTransfer(bytes memory data) private {\n //uint32 nonce = data.toUint64(0);\n uint8 source_chain = data.toUint8(4);\n\n uint8 target_chain = data.toUint8(5);\n //bytes32 source_address = data.toBytes32(6);\n //bytes32 target_address = data.toBytes32(38);\n address target_address = data.toAddress(38 + 12);\n\n uint8 token_chain = data.toUint8(70);\n //bytes32 token_address = data.toBytes32(71);\n uint256 amount = data.toUint256(103);\n\n require(source_chain != target_chain, \"same chain transfers are not supported\");\n require(target_chain == CHAIN_ID, \"transfer must be incoming\");\n\n if (token_chain != CHAIN_ID) {\n bytes32 token_address = data.toBytes32(71);\n bytes32 asset_id = keccak256(abi.encodePacked(token_chain, token_address));\n\n // if yes: mint to address\n // if no: create and mint\n address wrapped_asset = wrappedAssets[asset_id];\n if (wrapped_asset == address(0)) {\n wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address);\n }\n\n WrappedAsset(wrapped_asset).mint(target_address, amount);\n } else {\n address token_address = data.toAddress(71 + 12);\n\n IERC20(token_address).safeTransfer(target_address, amount);\n }\n }\n\n function deployWrappedAsset(bytes32 seed, uint8 token_chain, bytes32 token_address) private returns (address asset){\n // Taken from https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/ProxyFactory.sol\n // Licensed under MIT\n bytes20 targetBytes = bytes20(wrappedAssetMaster);\n assembly {\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create(0, clone, 0x37)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address);\n\n // Store address\n wrappedAssets[seed] = asset;\n isWrappedAsset[asset] = true;\n }\n\n // TODO(hendrik): nonce\n function lockAssets(\n address asset,\n uint256 amount,\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce\n ) public nonReentrant {\n require(amount != 0, \"amount must not be 0\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\n if (isWrappedAsset[asset]) {\n WrappedAsset(asset).burn(msg.sender, amount);\n asset_chain = WrappedAsset(asset).assetChain();\n asset_address = WrappedAsset(asset).assetAddress();\n } else {\n uint256 balanceBefore = IERC20(asset).balanceOf(address(this));\n IERC20(asset).safeTransferFrom(msg.sender, address(this), amount);\n uint256 balanceAfter = IERC20(asset).balanceOf(address(this));\n\n // The amount that was transferred in is the delta between balance before and after the transfer.\n // This is to properly handle tokens that charge a fee on transfer.\n amount = balanceAfter.sub(balanceBefore);\n asset_address = bytes32(uint256(asset));\n }\n\n emit LogTokensLocked(target_chain, asset_chain, asset_address, bytes32(uint256(msg.sender)), recipient, amount, nonce);\n }\n\n function lockETH(\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce\n ) public payable nonReentrant {\n require(msg.value != 0, \"amount must not be 0\");\n\n // Wrap tx value in WETH\n WETH(WETHAddress).deposit{value : msg.value}();\n\n // Log deposit of WETH\n emit LogTokensLocked(target_chain, CHAIN_ID, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, msg.value, nonce);\n }\n\n\nfallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\nreceive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\nfunction deposit() external payable;\n\nfunction withdraw(uint256 amount) external;\n}\n", "sourcePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", "ast": { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", "exportedSymbols": { "WETH": [ 1181 ], "Wormhole": [ 1170 ] }, "id": 1182, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { "id": 335, "literals": [ "solidity", "^", "0.6", ".0" ], "nodeType": "PragmaDirective", "src": "103:23:1" }, { "id": 336, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "127:33:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 337, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2023, "src": "162:56:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "id": 338, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2236, "src": "219:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 339, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1945, "src": "279:51:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "id": 340, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2480, "src": "331:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol", "file": "./BytesLib.sol", "id": 341, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 334, "src": "391:24:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "file": "./WrappedAsset.sol", "id": 342, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1726, "src": "416:28:1", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 343, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2479, "src": "467:15:1", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$2479", "typeString": "contract ReentrancyGuard" } }, "id": 344, "nodeType": "InheritanceSpecifier", "src": "467:15:1" } ], "contractDependencies": [ 2479 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1170, "linearizedBaseContracts": [ 1170, 2479 ], "name": "Wormhole", "nodeType": "ContractDefinition", "nodes": [ { "id": 347, "libraryName": { "contractScope": null, "id": 345, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2235, "src": "495:9:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$2235", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "489:27:1", "typeName": { "contractScope": null, "id": 346, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2022, "src": "509:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } } }, { "id": 350, "libraryName": { "contractScope": null, "id": 348, "name": "BytesLib", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 333, "src": "527:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_BytesLib_$333", "typeString": "library BytesLib" } }, "nodeType": "UsingForDirective", "src": "521:25:1", "typeName": { "id": 349, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "540:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, { "id": 353, "libraryName": { "contractScope": null, "id": 351, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1944, "src": "557:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$1944", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "551:27:1", "typeName": { "id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "570:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "functionSelector": "99da1d3c", "id": 355, "mutability": "mutable", "name": "wrappedAssetMaster", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "629:33:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 354, "name": "address", "nodeType": "ElementaryTypeName", "src": "629:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 358, "mutability": "mutable", "name": "CHAIN_ID", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "697:18:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 356, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "697:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "32", "id": 357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "visibility": "internal" }, { "constant": true, "id": 361, "mutability": "constant", "name": "WETHAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "767:73:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 359, "name": "address", "nodeType": "ElementaryTypeName", "src": "767:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", "id": 360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "798:42:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, "visibility": "internal" }, { "canonicalName": "Wormhole.GuardianSet", "id": 367, "members": [ { "constant": false, "id": 364, "mutability": "mutable", "name": "keys", "nodeType": "VariableDeclaration", "overrides": null, "scope": 367, "src": "876:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 362, "name": "address", "nodeType": "ElementaryTypeName", "src": "876:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 363, "length": null, "nodeType": "ArrayTypeName", "src": "876:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 366, "mutability": "mutable", "name": "expiration_time", "nodeType": "VariableDeclaration", "overrides": null, "scope": 367, "src": "900:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 365, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "900:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "name": "GuardianSet", "nodeType": "StructDefinition", "scope": 1170, "src": "847:82:1", "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 373, "name": "LogGuardianSetChanged", "nodeType": "EventDefinition", "parameters": { "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 369, "indexed": false, "mutability": "mutable", "name": "oldGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 373, "src": "972:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 368, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "972:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 371, "indexed": false, "mutability": "mutable", "name": "newGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 373, "src": "1005:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 370, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1005:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "962:72:1" }, "src": "935:100:1" }, { "anonymous": false, "documentation": null, "id": 389, "name": "LogTokensLocked", "nodeType": "EventDefinition", "parameters": { "id": 388, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1072:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 374, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1072:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 377, "indexed": false, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1100:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 376, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1100:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 379, "indexed": true, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1127:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 378, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1127:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 381, "indexed": true, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1158:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 380, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1158:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 383, "indexed": false, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1190:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 382, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1190:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 385, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1217:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 384, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1217:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 387, "indexed": false, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1241:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 386, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1241:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1062:197:1" }, "src": "1041:219:1" }, { "constant": false, "functionSelector": "42b0aefa", "id": 393, "mutability": "mutable", "name": "guardian_sets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1319:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "typeName": { "id": 392, "keyType": { "id": 390, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1327:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Mapping", "src": "1319:30:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "valueType": { "contractScope": null, "id": 391, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "1337:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "822d82b3", "id": 395, "mutability": "mutable", "name": "guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1411:32:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 394, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1411:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "7f04d9e6", "id": 397, "mutability": "mutable", "name": "vaa_expiry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1501:24:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 396, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1501:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 401, "mutability": "mutable", "name": "consumedVAAs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1571:37:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 400, "keyType": { "id": 398, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1579:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1571:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 399, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1590:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "internal" }, { "constant": false, "functionSelector": "b6694c2a", "id": 405, "mutability": "mutable", "name": "wrappedAssets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1663:48:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "typeName": { "id": 404, "keyType": { "id": 402, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1671:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1663:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "valueType": { "id": 403, "name": "address", "nodeType": "ElementaryTypeName", "src": "1682:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "1a2be4da", "id": 409, "mutability": "mutable", "name": "isWrappedAsset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1717:46:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 408, "keyType": { "id": 406, "name": "address", "nodeType": "ElementaryTypeName", "src": "1725:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1717:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 407, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1736:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "body": { "id": 436, "nodeType": "Block", "src": "1880:217:1", "statements": [ { "expression": { "argumentTypes": null, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 418, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "1890:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 420, "indexExpression": { "argumentTypes": null, "hexValue": "30", "id": 419, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1904:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1890:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 421, "name": "initial_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "1909:20:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "1890:39:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 423, "nodeType": "ExpressionStatement", "src": "1890:39:1" }, { "expression": { "argumentTypes": null, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 424, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "1982:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2003:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1982:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 427, "nodeType": "ExpressionStatement", "src": "1982:22:1" }, { "expression": { "argumentTypes": null, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 428, "name": "vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "2014:10:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 429, "name": "_vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 415, "src": "2027:11:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "2014:24:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 431, "nodeType": "ExpressionStatement", "src": "2014:24:1" }, { "expression": { "argumentTypes": null, "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 432, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "2049:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 433, "name": "wrapped_asset_master", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 413, "src": "2070:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2049:41:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 435, "nodeType": "ExpressionStatement", "src": "2049:41:1" } ] }, "documentation": null, "id": 437, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 416, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 411, "mutability": "mutable", "name": "initial_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 437, "src": "1782:39:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 410, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "1782:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 413, "mutability": "mutable", "name": "wrapped_asset_master", "nodeType": "VariableDeclaration", "overrides": null, "scope": 437, "src": "1823:28:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 412, "name": "address", "nodeType": "ElementaryTypeName", "src": "1823:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 415, "mutability": "mutable", "name": "_vaa_expiry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 437, "src": "1853:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 414, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1853:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1781:91:1" }, "returnParameters": { "id": 417, "nodeType": "ParameterList", "parameters": [], "src": "1880:0:1" }, "scope": 1170, "src": "1770:327:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 448, "nodeType": "Block", "src": "2183:42:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 444, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "2200:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 446, "indexExpression": { "argumentTypes": null, "id": 445, "name": "idx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 439, "src": "2214:3:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2200:18:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "functionReturnParameters": 443, "id": 447, "nodeType": "Return", "src": "2193:25:1" } ] }, "documentation": null, "functionSelector": "f951975a", "id": 449, "implemented": true, "kind": "function", "modifiers": [], "name": "getGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 440, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 439, "mutability": "mutable", "name": "idx", "nodeType": "VariableDeclaration", "overrides": null, "scope": 449, "src": "2127:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 438, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2127:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "2126:12:1" }, "returnParameters": { "id": 443, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 442, "mutability": "mutable", "name": "gs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 449, "src": "2160:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 441, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "2160:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "src": "2159:23:1" }, "scope": 1170, "src": "2103:122:1", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 701, "nodeType": "Block", "src": "2304:1920:1", "statements": [ { "assignments": [ 457 ], "declarations": [ { "constant": false, "id": 457, "mutability": "mutable", "name": "version", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2314:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 456, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2314:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 462, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 460, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2342:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 458, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2330:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2330:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2330:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2314:30:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 464, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2362:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2373:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2362:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2376:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" }, "value": "VAA version incompatible" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" } ], "id": 463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2354:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2354:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 469, "nodeType": "ExpressionStatement", "src": "2354:49:1" }, { "assignments": [ 471 ], "declarations": [ { "constant": false, "id": 471, "mutability": "mutable", "name": "vaa_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2460:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 470, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2460:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 476, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2505:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "id": 472, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2492:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "2492:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2492:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "2460:47:1" }, { "assignments": [ 478 ], "declarations": [ { "constant": false, "id": 478, "mutability": "mutable", "name": "len_signers", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2518:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 477, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2518:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 483, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2552:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 479, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2540:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2540:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2540:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2518:36:1" }, { "assignments": [ 485 ], "declarations": [ { "constant": false, "id": 485, "mutability": "mutable", "name": "offset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2564:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 484, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2564:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 491, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2578:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3636", "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2582:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 488, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "2587:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2582:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2578:20:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2564:34:1" }, { "assignments": [ 493 ], "declarations": [ { "constant": false, "id": 493, "mutability": "mutable", "name": "timestamp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2643:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 492, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2643:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 498, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 496, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "2675:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 494, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2662:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "2662:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2662:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "2643:39:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 500, "name": "timestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 493, "src": "2747:9:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 501, "name": "vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "2759:10:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "2747:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 503, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2772:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2772:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2747:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "564141206861732065787069726564", "id": 506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2789:17:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86", "typeString": "literal_string \"VAA has expired\"" }, "value": "VAA has expired" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86", "typeString": "literal_string \"VAA has expired\"" } ], "id": 499, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2739:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2739:68:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 508, "nodeType": "ExpressionStatement", "src": "2739:68:1" }, { "assignments": [ 510 ], "declarations": [ { "constant": false, "id": 510, "mutability": "mutable", "name": "hash", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2843:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 509, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2843:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 521, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 514, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "2878:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 515, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2886:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2886:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 517, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "2899:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2886:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 512, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2868:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "2868:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 519, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2868:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 511, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2858:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2858:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "2843:64:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2925:19:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 523, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "2926:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 525, "indexExpression": { "argumentTypes": null, "id": 524, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 510, "src": "2939:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2926:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412077617320616c7265616479206578656375746564", "id": 527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2946:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" }, "value": "VAA was already executed" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" } ], "id": 522, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2917:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2917:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 529, "nodeType": "ExpressionStatement", "src": "2917:56:1" }, { "assignments": [ 531 ], "declarations": [ { "constant": false, "id": 531, "mutability": "mutable", "name": "guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2984:31:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 530, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "2984:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 535, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 532, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "3018:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 534, "indexExpression": { "argumentTypes": null, "id": 533, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "3032:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3018:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "2984:71:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 537, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3073:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 538, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 366, "src": "3073:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3105:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3073:33:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 541, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3110:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 366, "src": "3110:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 543, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3141:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3141:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3110:46:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3073:83:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "677561726469616e20736574206861732065787069726564", "id": 547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3158:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" }, "value": "guardian set has expired" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" } ], "id": 536, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3065:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3065:120:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 549, "nodeType": "ExpressionStatement", "src": "3065:120:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 551, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3203:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 552, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 364, "src": "3203:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3203:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "33", "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3230:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "src": "3203:28:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3234:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3203:32:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3238:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3203:36:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 560, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "3243:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3203:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6e6f2071756f72756d", "id": 562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3256:11:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" }, "value": "no quorum" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" } ], "id": 550, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3195:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3195:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 564, "nodeType": "ExpressionStatement", "src": "3195:73:1" }, { "body": { "id": 638, "nodeType": "Block", "src": "3318:334:1", "statements": [ { "assignments": [ 576 ], "declarations": [ { "constant": false, "id": 576, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3332:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 575, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3332:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 585, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3358:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 580, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3362:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3366:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3362:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3358:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 577, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3346:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3346:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3346:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3332:37:1" }, { "assignments": [ 587 ], "declarations": [ { "constant": false, "id": 587, "mutability": "mutable", "name": "r", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3383:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 586, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3383:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 596, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "37", "id": 590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3409:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7" }, "value": "7" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 591, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3413:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3417:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3413:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3409:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 588, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3395:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3395:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3395:25:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3383:37:1" }, { "assignments": [ 598 ], "declarations": [ { "constant": false, "id": 598, "mutability": "mutable", "name": "s", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3434:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 597, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3434:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 607, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3339", "id": 601, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3460:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_39_by_1", "typeString": "int_const 39" }, "value": "39" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 602, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3465:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3469:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3465:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3460:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 599, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3446:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3446:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3446:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3434:38:1" }, { "assignments": [ 609 ], "declarations": [ { "constant": false, "id": 609, "mutability": "mutable", "name": "v", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3486:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 608, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3486:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 618, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 612, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3508:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 613, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3513:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3517:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3513:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3508:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 610, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3496:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3496:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3496:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3486:34:1" }, { "expression": { "argumentTypes": null, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 619, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "3534:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "hexValue": "3237", "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3539:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_27_by_1", "typeString": "int_const 27" }, "value": "27" }, "src": "3534:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 622, "nodeType": "ExpressionStatement", "src": "3534:7:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 625, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 510, "src": "3573:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 626, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "3579:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 627, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "3582:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 628, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "3585:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 624, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -6, "src": "3563:9:1", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3563:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 630, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3591:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 631, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 364, "src": "3591:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 633, "indexExpression": { "argumentTypes": null, "id": 632, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "3609:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3591:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3563:52:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "564141207369676e617475726520696e76616c6964", "id": 635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3617:23:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" }, "value": "VAA signature invalid" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" } ], "id": 623, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3555:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3555:86:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 637, "nodeType": "ExpressionStatement", "src": "3555:86:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 569, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3296:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 570, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "3300:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3296:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 639, "initializationExpression": { "assignments": [ 566 ], "declarations": [ { "constant": false, "id": 566, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 639, "src": "3284:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 565, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3284:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 568, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3293:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "3284:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3313:3:1", "subExpression": { "argumentTypes": null, "id": 572, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3313:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 574, "nodeType": "ExpressionStatement", "src": "3313:3:1" }, "nodeType": "ForStatement", "src": "3279:373:1" }, { "assignments": [ 641 ], "declarations": [ { "constant": false, "id": 641, "mutability": "mutable", "name": "action", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "3662:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 640, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3662:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 648, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 644, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "3689:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3698:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3689:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 642, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3677:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3677:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3677:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3662:38:1" }, { "assignments": [ 650 ], "declarations": [ { "constant": false, "id": 650, "mutability": "mutable", "name": "payload", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "3710:20:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 649, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3710:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "id": 664, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 653, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "3743:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3752:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3743:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 656, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3755:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3755:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 658, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "3769:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 659, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3778:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3769:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 661, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3768:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3755:25:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 651, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3733:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "3733:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3733:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "3710:71:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 665, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "3819:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783031", "id": 666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3829:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "0x01" }, "src": "3819:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 680, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "4027:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783130", "id": 681, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4037:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16" }, "value": "0x10" }, "src": "4027:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 692, "nodeType": "Block", "src": "4094:53:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "696e76616c69642056414120616374696f6e", "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4115:20:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" }, "value": "invalid VAA action" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" } ], "id": 688, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ -19, -19 ], "referencedDeclaration": -19, "src": "4108:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4108:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 691, "nodeType": "ExpressionStatement", "src": "4108:28:1" } ] }, "id": 693, "nodeType": "IfStatement", "src": "4023:124:1", "trueBody": { "id": 687, "nodeType": "Block", "src": "4043:45:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 684, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 650, "src": "4069:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 683, "name": "vaaTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 928, "src": "4057:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4057:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 686, "nodeType": "ExpressionStatement", "src": "4057:20:1" } ] } }, "id": 694, "nodeType": "IfStatement", "src": "3815:332:1", "trueBody": { "id": 679, "nodeType": "Block", "src": "3835:182:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 671, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 669, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "3857:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 670, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "3883:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "3857:44:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3903:59:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" }, "value": "only the current guardian set can change the guardian set" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" } ], "id": 668, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3849:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3849:114:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 674, "nodeType": "ExpressionStatement", "src": "3849:114:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 676, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 650, "src": "3998:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 675, "name": "vaaUpdateGuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "3977:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3977:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 678, "nodeType": "ExpressionStatement", "src": "3977:29:1" } ] } }, { "expression": { "argumentTypes": null, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 695, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4192:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 697, "indexExpression": { "argumentTypes": null, "id": 696, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 510, "src": "4205:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4192:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 698, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4213:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "4192:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 700, "nodeType": "ExpressionStatement", "src": "4192:25:1" } ] }, "documentation": null, "functionSelector": "3bc0aee6", "id": 702, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 454, "modifierName": { "argumentTypes": null, "id": 453, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "2291:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2291:12:1" } ], "name": "submitVAA", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 452, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 451, "mutability": "mutable", "name": "vaa", "nodeType": "VariableDeclaration", "overrides": null, "scope": 702, "src": "2259:18:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 450, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2259:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "2249:34:1" }, "returnParameters": { "id": 455, "nodeType": "ParameterList", "parameters": [], "src": "2304:0:1" }, "scope": 1170, "src": "2231:1993:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 800, "nodeType": "Block", "src": "4287:744:1", "statements": [ { "assignments": [ 708 ], "declarations": [ { "constant": false, "id": 708, "mutability": "mutable", "name": "new_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4297:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 707, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4297:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 713, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 711, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4343:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 709, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "4329:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "4329:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4329:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4297:48:1" }, { "assignments": [ 715 ], "declarations": [ { "constant": false, "id": 715, "mutability": "mutable", "name": "len", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4355:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 714, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4355:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 720, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 718, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4380:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 716, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "4367:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "4367:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4367:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "4355:27:1" }, { "assignments": [ 725 ], "declarations": [ { "constant": false, "id": 725, "mutability": "mutable", "name": "new_guardians", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4393:30:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 723, "name": "address", "nodeType": "ElementaryTypeName", "src": "4393:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 724, "length": null, "nodeType": "ArrayTypeName", "src": "4393:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 731, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 729, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "4440:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 728, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4426:13:1", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { "id": 726, "name": "address", "nodeType": "ElementaryTypeName", "src": "4430:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 727, "length": null, "nodeType": "ArrayTypeName", "src": "4430:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4426:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4393:51:1" }, { "body": { "id": 759, "nodeType": "Block", "src": "4485:103:1", "statements": [ { "assignments": [ 743 ], "declarations": [ { "constant": false, "id": 743, "mutability": "mutable", "name": "addr", "nodeType": "VariableDeclaration", "overrides": null, "scope": 759, "src": "4499:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 742, "name": "address", "nodeType": "ElementaryTypeName", "src": "4499:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 752, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "35", "id": 746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4529:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 749, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 747, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4533:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3230", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4537:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20" }, "value": "20" }, "src": "4533:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4529:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 744, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "4514:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "4514:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4514:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4499:41:1" }, { "expression": { "argumentTypes": null, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 753, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 725, "src": "4554:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 755, "indexExpression": { "argumentTypes": null, "id": 754, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4568:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4554:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 756, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "4573:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4554:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 758, "nodeType": "ExpressionStatement", "src": "4554:23:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 736, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4471:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 737, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "4475:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4471:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 760, "initializationExpression": { "assignments": [ 733 ], "declarations": [ { "constant": false, "id": 733, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 760, "src": "4459:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 732, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4459:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 735, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4468:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "4459:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4480:3:1", "subExpression": { "argumentTypes": null, "id": 739, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4480:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 741, "nodeType": "ExpressionStatement", "src": "4480:3:1" }, "nodeType": "ForStatement", "src": "4454:134:1" }, { "assignments": [ 762 ], "declarations": [ { "constant": false, "id": 762, "mutability": "mutable", "name": "old_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4598:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 761, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4598:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 764, "initialValue": { "argumentTypes": null, "id": 763, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "4630:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4598:50:1" }, { "expression": { "argumentTypes": null, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 765, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "4658:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 766, "name": "new_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 708, "src": "4679:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4658:43:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 768, "nodeType": "ExpressionStatement", "src": "4658:43:1" }, { "assignments": [ 770 ], "declarations": [ { "constant": false, "id": 770, "mutability": "mutable", "name": "new_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4712:35:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 769, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "4712:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 775, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 772, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 725, "src": "4762:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "hexValue": "30", "id": 773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4777:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 771, "name": "GuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "4750:11:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_GuardianSet_$367_storage_ptr_$", "typeString": "type(struct Wormhole.GuardianSet storage pointer)" } }, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4750:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4712:67:1" }, { "expression": { "argumentTypes": null, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 776, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "4789:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 778, "indexExpression": { "argumentTypes": null, "id": 777, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "4803:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4789:33:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 779, "name": "new_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 770, "src": "4825:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "4789:52:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 781, "nodeType": "ExpressionStatement", "src": "4789:52:1" }, { "expression": { "argumentTypes": null, "id": 793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 782, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "4851:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 784, "indexExpression": { "argumentTypes": null, "id": 783, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 762, "src": "4865:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4851:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 785, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 366, "src": "4851:53:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 788, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4914:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4914:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 787, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4907:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)" }, "typeName": { "id": 786, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4907:6:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4907:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 791, "name": "vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "4933:10:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4907:36:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4851:92:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 794, "nodeType": "ExpressionStatement", "src": "4851:92:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 796, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 762, "src": "4981:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { "argumentTypes": null, "id": 797, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "5005:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 795, "name": "LogGuardianSetChanged", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 373, "src": "4959:21:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", "typeString": "function (uint32,uint32)" } }, "id": 798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4959:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 799, "nodeType": "EmitStatement", "src": "4954:70:1" } ] }, "documentation": null, "id": 801, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaUpdateGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 705, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 704, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 801, "src": "4260:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 703, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4260:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "4259:19:1" }, "returnParameters": { "id": 706, "nodeType": "ParameterList", "parameters": [], "src": "4287:0:1" }, "scope": 1170, "src": "4230:801:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 927, "nodeType": "Block", "src": "5085:1325:1", "statements": [ { "assignments": [ 807 ], "declarations": [ { "constant": false, "id": 807, "mutability": "mutable", "name": "source_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5138:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 806, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5138:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 812, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5172:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 808, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5159:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5159:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5159:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5138:36:1" }, { "assignments": [ 814 ], "declarations": [ { "constant": false, "id": 814, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5185:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 813, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5185:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 819, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 817, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5219:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 815, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5206:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5206:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5206:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5185:36:1" }, { "assignments": [ 821 ], "declarations": [ { "constant": false, "id": 821, "mutability": "mutable", "name": "target_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5340:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 820, "name": "address", "nodeType": "ElementaryTypeName", "src": "5340:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 828, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" }, "id": 826, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3338", "id": 824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5380:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_38_by_1", "typeString": "int_const 38" }, "value": "38" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5385:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "5380:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } ], "expression": { "argumentTypes": null, "id": 822, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5365:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "5365:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 827, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5365:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5340:48:1" }, { "assignments": [ 830 ], "declarations": [ { "constant": false, "id": 830, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5399:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 829, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5399:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 835, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3730", "id": 833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5432:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" }, "value": "70" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" } ], "expression": { "argumentTypes": null, "id": 831, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5419:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5419:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 834, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5419:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5399:36:1" }, { "assignments": [ 837 ], "declarations": [ { "constant": false, "id": 837, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5499:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5499:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 842, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313033", "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5531:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" }, "value": "103" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" } ], "expression": { "argumentTypes": null, "id": 838, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5516:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 839, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint256", "nodeType": "MemberAccess", "referencedDeclaration": 271, "src": "5516:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint256)" } }, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5516:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5499:36:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 844, "name": "source_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "5554:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 845, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "5570:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5554:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", "id": 847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5584:40:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" }, "value": "same chain transfers are not supported" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" } ], "id": 843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5546:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 848, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5546:79:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 849, "nodeType": "ExpressionStatement", "src": "5546:79:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 851, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "5643:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 852, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "5659:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5643:24:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", "id": 854, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5669:27:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" }, "value": "transfer must be incoming" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" } ], "id": 850, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5635:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5635:62:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 856, "nodeType": "ExpressionStatement", "src": "5635:62:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 857, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "5712:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 858, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "5727:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5712:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 925, "nodeType": "Block", "src": "6259:145:1", "statements": [ { "assignments": [ 909 ], "declarations": [ { "constant": false, "id": 909, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 925, "src": "6273:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 908, "name": "address", "nodeType": "ElementaryTypeName", "src": "6273:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 916, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" }, "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6312:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6317:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "6312:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } ], "expression": { "argumentTypes": null, "id": 910, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "6297:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "6297:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 915, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6297:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6273:47:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 921, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "6370:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 922, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 837, "src": "6386:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 918, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 909, "src": "6342:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 917, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "6335:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6335:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 2056, "src": "6335:34:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2022_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2022_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6335:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 924, "nodeType": "ExpressionStatement", "src": "6335:58:1" } ] }, "id": 926, "nodeType": "IfStatement", "src": "5708:696:1", "trueBody": { "id": 907, "nodeType": "Block", "src": "5737:516:1", "statements": [ { "assignments": [ 861 ], "declarations": [ { "constant": false, "id": 861, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 907, "src": "5751:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 860, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5751:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 866, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3731", "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5790:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" } ], "expression": { "argumentTypes": null, "id": 862, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5775:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "5775:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5775:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5751:42:1" }, { "assignments": [ 868 ], "declarations": [ { "constant": false, "id": 868, "mutability": "mutable", "name": "asset_id", "nodeType": "VariableDeclaration", "overrides": null, "scope": 907, "src": "5807:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 867, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5807:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 876, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 872, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "5853:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 873, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, "src": "5866:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 870, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5836:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 871, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5836:16:1", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5836:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 869, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5826:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 875, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5826:55:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5807:74:1" }, { "assignments": [ 878 ], "declarations": [ { "constant": false, "id": 878, "mutability": "mutable", "name": "wrapped_asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 907, "src": "5973:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 877, "name": "address", "nodeType": "ElementaryTypeName", "src": "5973:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 882, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 879, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "5997:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 881, "indexExpression": { "argumentTypes": null, "id": 880, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "6011:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5997:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5973:47:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 883, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 878, "src": "6038:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6063:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 885, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6055:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 884, "name": "address", "nodeType": "ElementaryTypeName", "src": "6055:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6055:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6038:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 898, "nodeType": "IfStatement", "src": "6034:138:1", "trueBody": { "id": 897, "nodeType": "Block", "src": "6067:105:1", "statements": [ { "expression": { "argumentTypes": null, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 889, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 878, "src": "6085:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 891, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "6120:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 892, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "6130:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 893, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, "src": "6143:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 890, "name": "deployWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 968, "src": "6101:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32) returns (address)" } }, "id": 894, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6101:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6085:72:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 896, "nodeType": "ExpressionStatement", "src": "6085:72:1" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 903, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "6219:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 904, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 837, "src": "6235:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 900, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 878, "src": "6199:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 899, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "6186:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6186:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1263, "src": "6186:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6186:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 906, "nodeType": "ExpressionStatement", "src": "6186:56:1" } ] } } ] }, "documentation": null, "id": 928, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaTransfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 804, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 803, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 928, "src": "5058:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 802, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5058:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "5057:19:1" }, "returnParameters": { "id": 805, "nodeType": "ParameterList", "parameters": [], "src": "5085:0:1" }, "scope": 1170, "src": "5037:1373:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 967, "nodeType": "Block", "src": "6531:791:1", "statements": [ { "assignments": [ 940 ], "declarations": [ { "constant": false, "id": 940, "mutability": "mutable", "name": "targetBytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 967, "src": "6709:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" }, "typeName": { "id": 939, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6709:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "value": null, "visibility": "internal" } ], "id": 945, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 943, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "6739:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 942, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6731:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": { "id": 941, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6731:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6731:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "nodeType": "VariableDeclarationStatement", "src": "6709:49:1" }, { "AST": { "nodeType": "YulBlock", "src": "6777:341:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "6791:24:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "6810:4:1", "type": "", "value": "0x40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "6804:5:1" }, "nodeType": "YulFunctionCall", "src": "6804:11:1" }, "variables": [ { "name": "clone", "nodeType": "YulTypedName", "src": "6795:5:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "6835:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6842:66:1", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6828:6:1" }, "nodeType": "YulFunctionCall", "src": "6828:81:1" }, "nodeType": "YulExpressionStatement", "src": "6828:81:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "6933:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6940:4:1", "type": "", "value": "0x14" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6929:3:1" }, "nodeType": "YulFunctionCall", "src": "6929:16:1" }, { "name": "targetBytes", "nodeType": "YulIdentifier", "src": "6947:11:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6922:6:1" }, "nodeType": "YulFunctionCall", "src": "6922:37:1" }, "nodeType": "YulExpressionStatement", "src": "6922:37:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "6983:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6990:4:1", "type": "", "value": "0x28" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6979:3:1" }, "nodeType": "YulFunctionCall", "src": "6979:16:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6997:66:1", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6972:6:1" }, "nodeType": "YulFunctionCall", "src": "6972:92:1" }, "nodeType": "YulExpressionStatement", "src": "6972:92:1" }, { "nodeType": "YulAssignment", "src": "7077:31:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "7093:1:1", "type": "", "value": "0" }, { "name": "clone", "nodeType": "YulIdentifier", "src": "7096:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7103:4:1", "type": "", "value": "0x37" } ], "functionName": { "name": "create", "nodeType": "YulIdentifier", "src": "7086:6:1" }, "nodeType": "YulFunctionCall", "src": "7086:22:1" }, "variableNames": [ { "name": "asset", "nodeType": "YulIdentifier", "src": "7077:5:1" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 937, "isOffset": false, "isSlot": false, "src": "7077:5:1", "valueSize": 1 }, { "declaration": 940, "isOffset": false, "isSlot": false, "src": "6947:11:1", "valueSize": 1 } ], "id": 946, "nodeType": "InlineAssembly", "src": "6768:350:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 951, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 932, "src": "7187:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 952, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "7200:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 948, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 937, "src": "7169:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 947, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7156:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7156:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 1242, "src": "7156:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$returns$__$", "typeString": "function (uint8,bytes32) external" } }, "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7156:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 954, "nodeType": "ExpressionStatement", "src": "7156:58:1" }, { "expression": { "argumentTypes": null, "id": 959, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 955, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "7250:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 957, "indexExpression": { "argumentTypes": null, "id": 956, "name": "seed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 930, "src": "7264:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7250:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 958, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 937, "src": "7272:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7250:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 960, "nodeType": "ExpressionStatement", "src": "7250:27:1" }, { "expression": { "argumentTypes": null, "id": 965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 961, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 409, "src": "7287:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 963, "indexExpression": { "argumentTypes": null, "id": 962, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 937, "src": "7302:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7287:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7311:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "7287:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 966, "nodeType": "ExpressionStatement", "src": "7287:28:1" } ] }, "documentation": null, "id": 968, "implemented": true, "kind": "function", "modifiers": [], "name": "deployWrappedAsset", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 935, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 930, "mutability": "mutable", "name": "seed", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6444:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 929, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6444:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 932, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6458:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 931, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6458:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 934, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6477:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 933, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6477:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "6443:56:1" }, "returnParameters": { "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 937, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6517:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 936, "name": "address", "nodeType": "ElementaryTypeName", "src": "6517:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6516:15:1" }, "scope": 1170, "src": "6416:906:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 1099, "nodeType": "Block", "src": "7526:1034:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 984, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7544:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 985, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7554:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "7544:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7557:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 983, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7536:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7536:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 989, "nodeType": "ExpressionStatement", "src": "7536:44:1" }, { "assignments": [ 991 ], "declarations": [ { "constant": false, "id": 991, "mutability": "mutable", "name": "asset_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1099, "src": "7591:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 990, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7591:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 993, "initialValue": { "argumentTypes": null, "id": 992, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "7611:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "7591:28:1" }, { "assignments": [ 995 ], "declarations": [ { "constant": false, "id": 995, "mutability": "mutable", "name": "asset_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1099, "src": "7629:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 994, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7629:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 996, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "7629:21:1" }, { "condition": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 997, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 409, "src": "7664:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 999, "indexExpression": { "argumentTypes": null, "id": 998, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7679:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7664:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1080, "nodeType": "Block", "src": "7886:539:1", "statements": [ { "assignments": [ 1027 ], "declarations": [ { "constant": false, "id": 1027, "mutability": "mutable", "name": "balanceBefore", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1080, "src": "7900:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7900:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1037, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1034, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7956:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } ], "id": 1033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7948:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1032, "name": "address", "nodeType": "ElementaryTypeName", "src": "7948:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7948:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1029, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7931:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1028, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "7924:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7924:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1961, "src": "7924:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7924:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7900:62:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1042, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8007:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8007:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1046, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8027:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } ], "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8019:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1044, "name": "address", "nodeType": "ElementaryTypeName", "src": "8019:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1047, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8019:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1048, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8034:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1039, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7983:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1038, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "7976:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 1040, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2081, "src": "7976:30:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2022_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2022_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1050, "nodeType": "ExpressionStatement", "src": "7976:65:1" }, { "assignments": [ 1052 ], "declarations": [ { "constant": false, "id": 1052, "mutability": "mutable", "name": "balanceAfter", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1080, "src": "8055:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1051, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8055:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1062, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1059, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8110:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } ], "id": 1058, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8102:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", "src": "8102:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8102:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1054, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "8085:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1053, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "8078:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8078:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1961, "src": "8078:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8078:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8055:61:1" }, { "expression": { "argumentTypes": null, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1063, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8321:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1066, "name": "balanceBefore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "8347:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1064, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "8330:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "8330:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8330:31:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8321:40:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1069, "nodeType": "ExpressionStatement", "src": "8321:40:1" }, { "expression": { "argumentTypes": null, "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1070, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "8375:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1075, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "8407:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1074, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8399:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1073, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8399:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1076, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8399:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1072, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8391:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1071, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8391:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8391:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "8375:39:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1079, "nodeType": "ExpressionStatement", "src": "8375:39:1" } ] }, "id": 1081, "nodeType": "IfStatement", "src": "7660:765:1", "trueBody": { "id": 1025, "nodeType": "Block", "src": "7687:193:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1004, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7726:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7726:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1006, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7738:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1001, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7714:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1000, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7701:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7701:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 1003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "burn", "nodeType": "MemberAccess", "referencedDeclaration": 1284, "src": "7701:24:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7701:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1008, "nodeType": "ExpressionStatement", "src": "7701:44:1" }, { "expression": { "argumentTypes": null, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1009, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 991, "src": "7759:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1011, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7786:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1010, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7773:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1012, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7773:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetChain", "nodeType": "MemberAccess", "referencedDeclaration": 1193, "src": "7773:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7773:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "7759:46:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1016, "nodeType": "ExpressionStatement", "src": "7759:46:1" }, { "expression": { "argumentTypes": null, "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1017, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "7819:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1019, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7848:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1018, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7835:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7835:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetAddress", "nodeType": "MemberAccess", "referencedDeclaration": 1195, "src": "7835:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, "id": 1022, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7835:34:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "7819:50:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1024, "nodeType": "ExpressionStatement", "src": "7819:50:1" } ] } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1083, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "8456:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1084, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 991, "src": "8470:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1085, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "8483:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1090, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8514:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8514:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1089, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8506:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8506:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8506:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1087, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8498:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1086, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8498:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8498:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1094, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8528:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1095, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8539:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1096, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 978, "src": "8547:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1082, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "8440:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8440:113:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1098, "nodeType": "EmitStatement", "src": "8435:118:1" } ] }, "documentation": null, "functionSelector": "13cca1a9", "id": 1100, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 981, "modifierName": { "argumentTypes": null, "id": 980, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "7513:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "7513:12:1" } ], "name": "lockAssets", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 979, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 970, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7385:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 969, "name": "address", "nodeType": "ElementaryTypeName", "src": "7385:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 972, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7408:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7408:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 974, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7432:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 973, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7432:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 976, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7459:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 975, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7459:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 978, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7487:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 977, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "7487:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "7375:130:1" }, "returnParameters": { "id": 982, "nodeType": "ParameterList", "parameters": [], "src": "7526:0:1" }, "scope": 1170, "src": "7356:1204:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1152, "nodeType": "Block", "src": "8694:330:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1112, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8712:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8712:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8725:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "8712:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8728:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 1111, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8704:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8704:47:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1118, "nodeType": "ExpressionStatement", "src": "8704:47:1" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1120, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "8800:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1119, "name": "WETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8795:4:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WETH_$1181_$", "typeString": "type(contract WETH)" } }, "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8795:17:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WETH_$1181", "typeString": "contract WETH" } }, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 1175, "src": "8795:25:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1123, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8829:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8829:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "8795:44:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8795:46:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1127, "nodeType": "ExpressionStatement", "src": "8795:46:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1129, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "8904:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1130, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "8918:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1135, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "8944:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8936:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8936:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1136, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8936:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8928:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1131, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8928:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8928:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1142, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8975:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8975:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8967:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1140, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8967:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8967:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1139, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1138, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8959:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1146, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1102, "src": "8989:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9000:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9000:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1149, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1106, "src": "9011:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1128, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "8888:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8888:129:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1151, "nodeType": "EmitStatement", "src": "8883:134:1" } ] }, "documentation": null, "functionSelector": "58d62e46", "id": 1153, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1109, "modifierName": { "argumentTypes": null, "id": 1108, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "8681:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "8681:12:1" } ], "name": "lockETH", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1107, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1102, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1153, "src": "8592:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1101, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8592:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1104, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1153, "src": "8619:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1103, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "8619:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1106, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1153, "src": "8647:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 1105, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8647:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "8582:83:1" }, "returnParameters": { "id": 1110, "nodeType": "ParameterList", "parameters": [], "src": "8694:0:1" }, "scope": 1170, "src": "8566:458:1", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { "id": 1160, "nodeType": "Block", "src": "9055:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9063:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1156, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ -19, -19 ], "referencedDeclaration": -19, "src": "9056:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9056:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1159, "nodeType": "ExpressionStatement", "src": "9056:54:1" } ] }, "documentation": null, "id": 1161, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1154, "nodeType": "ParameterList", "parameters": [], "src": "9035:2:1" }, "returnParameters": { "id": 1155, "nodeType": "ParameterList", "parameters": [], "src": "9055:0:1" }, "scope": 1170, "src": "9027:85:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 1168, "nodeType": "Block", "src": "9140:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9148:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1164, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ -19, -19 ], "referencedDeclaration": -19, "src": "9141:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9141:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1167, "nodeType": "ExpressionStatement", "src": "9141:54:1" } ] }, "documentation": null, "id": 1169, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1162, "nodeType": "ParameterList", "parameters": [], "src": "9120:2:1" }, "returnParameters": { "id": 1163, "nodeType": "ParameterList", "parameters": [], "src": "9140:0:1" }, "scope": 1170, "src": "9113:84:1", "stateMutability": "payable", "virtual": false, "visibility": "external" } ], "scope": 1182, "src": "446:8753:1" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1171, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2022, "src": "9220:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1172, "nodeType": "InheritanceSpecifier", "src": "9220:6:1" } ], "contractDependencies": [ 2022 ], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 1181, "linearizedBaseContracts": [ 1181, 2022 ], "name": "WETH", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "d0e30db0", "id": 1175, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1173, "nodeType": "ParameterList", "parameters": [], "src": "9245:2:1" }, "returnParameters": { "id": 1174, "nodeType": "ParameterList", "parameters": [], "src": "9264:0:1" }, "scope": 1181, "src": "9229:36:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": null, "documentation": null, "functionSelector": "2e1a7d4d", "id": 1180, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1178, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1177, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1180, "src": "9285:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1176, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9285:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9284:16:1" }, "returnParameters": { "id": 1179, "nodeType": "ParameterList", "parameters": [], "src": "9309:0:1" }, "scope": 1181, "src": "9267:43:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 1182, "src": "9202:110:1" } ], "src": "103:9210:1" }, "legacyAST": { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", "exportedSymbols": { "WETH": [ 1181 ], "Wormhole": [ 1170 ] }, "id": 1182, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { "id": 335, "literals": [ "solidity", "^", "0.6", ".0" ], "nodeType": "PragmaDirective", "src": "103:23:1" }, { "id": 336, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", "src": "127:33:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 337, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2023, "src": "162:56:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "id": 338, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2236, "src": "219:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 339, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1945, "src": "279:51:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "id": 340, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 2480, "src": "331:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol", "file": "./BytesLib.sol", "id": 341, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 334, "src": "391:24:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "file": "./WrappedAsset.sol", "id": 342, "nodeType": "ImportDirective", "scope": 1182, "sourceUnit": 1726, "src": "416:28:1", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 343, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2479, "src": "467:15:1", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$2479", "typeString": "contract ReentrancyGuard" } }, "id": 344, "nodeType": "InheritanceSpecifier", "src": "467:15:1" } ], "contractDependencies": [ 2479 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1170, "linearizedBaseContracts": [ 1170, 2479 ], "name": "Wormhole", "nodeType": "ContractDefinition", "nodes": [ { "id": 347, "libraryName": { "contractScope": null, "id": 345, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2235, "src": "495:9:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$2235", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "489:27:1", "typeName": { "contractScope": null, "id": 346, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2022, "src": "509:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } } }, { "id": 350, "libraryName": { "contractScope": null, "id": 348, "name": "BytesLib", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 333, "src": "527:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_BytesLib_$333", "typeString": "library BytesLib" } }, "nodeType": "UsingForDirective", "src": "521:25:1", "typeName": { "id": 349, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "540:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, { "id": 353, "libraryName": { "contractScope": null, "id": 351, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1944, "src": "557:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$1944", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "551:27:1", "typeName": { "id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "570:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "functionSelector": "99da1d3c", "id": 355, "mutability": "mutable", "name": "wrappedAssetMaster", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "629:33:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 354, "name": "address", "nodeType": "ElementaryTypeName", "src": "629:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 358, "mutability": "mutable", "name": "CHAIN_ID", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "697:18:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 356, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "697:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "32", "id": 357, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "visibility": "internal" }, { "constant": true, "id": 361, "mutability": "constant", "name": "WETHAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "767:73:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 359, "name": "address", "nodeType": "ElementaryTypeName", "src": "767:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", "id": 360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "798:42:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, "visibility": "internal" }, { "canonicalName": "Wormhole.GuardianSet", "id": 367, "members": [ { "constant": false, "id": 364, "mutability": "mutable", "name": "keys", "nodeType": "VariableDeclaration", "overrides": null, "scope": 367, "src": "876:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 362, "name": "address", "nodeType": "ElementaryTypeName", "src": "876:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 363, "length": null, "nodeType": "ArrayTypeName", "src": "876:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 366, "mutability": "mutable", "name": "expiration_time", "nodeType": "VariableDeclaration", "overrides": null, "scope": 367, "src": "900:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 365, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "900:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "name": "GuardianSet", "nodeType": "StructDefinition", "scope": 1170, "src": "847:82:1", "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 373, "name": "LogGuardianSetChanged", "nodeType": "EventDefinition", "parameters": { "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 369, "indexed": false, "mutability": "mutable", "name": "oldGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 373, "src": "972:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 368, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "972:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 371, "indexed": false, "mutability": "mutable", "name": "newGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 373, "src": "1005:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 370, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1005:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "962:72:1" }, "src": "935:100:1" }, { "anonymous": false, "documentation": null, "id": 389, "name": "LogTokensLocked", "nodeType": "EventDefinition", "parameters": { "id": 388, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1072:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 374, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1072:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 377, "indexed": false, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1100:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 376, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1100:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 379, "indexed": true, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1127:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 378, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1127:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 381, "indexed": true, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1158:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 380, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1158:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 383, "indexed": false, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1190:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 382, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1190:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 385, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1217:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 384, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1217:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 387, "indexed": false, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 389, "src": "1241:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 386, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1241:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1062:197:1" }, "src": "1041:219:1" }, { "constant": false, "functionSelector": "42b0aefa", "id": 393, "mutability": "mutable", "name": "guardian_sets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1319:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "typeName": { "id": 392, "keyType": { "id": 390, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1327:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Mapping", "src": "1319:30:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "valueType": { "contractScope": null, "id": 391, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "1337:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "822d82b3", "id": 395, "mutability": "mutable", "name": "guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1411:32:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 394, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1411:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "7f04d9e6", "id": 397, "mutability": "mutable", "name": "vaa_expiry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1501:24:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 396, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1501:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 401, "mutability": "mutable", "name": "consumedVAAs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1571:37:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 400, "keyType": { "id": 398, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1579:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1571:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 399, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1590:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "internal" }, { "constant": false, "functionSelector": "b6694c2a", "id": 405, "mutability": "mutable", "name": "wrappedAssets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1663:48:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "typeName": { "id": 404, "keyType": { "id": 402, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1671:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1663:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "valueType": { "id": 403, "name": "address", "nodeType": "ElementaryTypeName", "src": "1682:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "1a2be4da", "id": 409, "mutability": "mutable", "name": "isWrappedAsset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1170, "src": "1717:46:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 408, "keyType": { "id": 406, "name": "address", "nodeType": "ElementaryTypeName", "src": "1725:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1717:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 407, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1736:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "body": { "id": 436, "nodeType": "Block", "src": "1880:217:1", "statements": [ { "expression": { "argumentTypes": null, "id": 422, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 418, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "1890:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 420, "indexExpression": { "argumentTypes": null, "hexValue": "30", "id": 419, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1904:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1890:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 421, "name": "initial_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "1909:20:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "1890:39:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 423, "nodeType": "ExpressionStatement", "src": "1890:39:1" }, { "expression": { "argumentTypes": null, "id": 426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 424, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "1982:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2003:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1982:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 427, "nodeType": "ExpressionStatement", "src": "1982:22:1" }, { "expression": { "argumentTypes": null, "id": 430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 428, "name": "vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "2014:10:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 429, "name": "_vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 415, "src": "2027:11:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "2014:24:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 431, "nodeType": "ExpressionStatement", "src": "2014:24:1" }, { "expression": { "argumentTypes": null, "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 432, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "2049:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 433, "name": "wrapped_asset_master", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 413, "src": "2070:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2049:41:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 435, "nodeType": "ExpressionStatement", "src": "2049:41:1" } ] }, "documentation": null, "id": 437, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 416, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 411, "mutability": "mutable", "name": "initial_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 437, "src": "1782:39:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 410, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "1782:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 413, "mutability": "mutable", "name": "wrapped_asset_master", "nodeType": "VariableDeclaration", "overrides": null, "scope": 437, "src": "1823:28:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 412, "name": "address", "nodeType": "ElementaryTypeName", "src": "1823:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 415, "mutability": "mutable", "name": "_vaa_expiry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 437, "src": "1853:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 414, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1853:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1781:91:1" }, "returnParameters": { "id": 417, "nodeType": "ParameterList", "parameters": [], "src": "1880:0:1" }, "scope": 1170, "src": "1770:327:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 448, "nodeType": "Block", "src": "2183:42:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 444, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "2200:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 446, "indexExpression": { "argumentTypes": null, "id": 445, "name": "idx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 439, "src": "2214:3:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2200:18:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "functionReturnParameters": 443, "id": 447, "nodeType": "Return", "src": "2193:25:1" } ] }, "documentation": null, "functionSelector": "f951975a", "id": 449, "implemented": true, "kind": "function", "modifiers": [], "name": "getGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 440, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 439, "mutability": "mutable", "name": "idx", "nodeType": "VariableDeclaration", "overrides": null, "scope": 449, "src": "2127:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 438, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2127:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "2126:12:1" }, "returnParameters": { "id": 443, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 442, "mutability": "mutable", "name": "gs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 449, "src": "2160:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 441, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "2160:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "src": "2159:23:1" }, "scope": 1170, "src": "2103:122:1", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 701, "nodeType": "Block", "src": "2304:1920:1", "statements": [ { "assignments": [ 457 ], "declarations": [ { "constant": false, "id": 457, "mutability": "mutable", "name": "version", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2314:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 456, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2314:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 462, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 460, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2342:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 458, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2330:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2330:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 461, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2330:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2314:30:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 464, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2362:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2373:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2362:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", "id": 467, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2376:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" }, "value": "VAA version incompatible" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" } ], "id": 463, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2354:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 468, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2354:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 469, "nodeType": "ExpressionStatement", "src": "2354:49:1" }, { "assignments": [ 471 ], "declarations": [ { "constant": false, "id": 471, "mutability": "mutable", "name": "vaa_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2460:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 470, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2460:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 476, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 474, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2505:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "id": 472, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2492:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 473, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "2492:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 475, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2492:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "2460:47:1" }, { "assignments": [ 478 ], "declarations": [ { "constant": false, "id": 478, "mutability": "mutable", "name": "len_signers", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2518:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 477, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2518:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 483, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2552:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 479, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2540:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2540:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2540:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2518:36:1" }, { "assignments": [ 485 ], "declarations": [ { "constant": false, "id": 485, "mutability": "mutable", "name": "offset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2564:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 484, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2564:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 491, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 490, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2578:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3636", "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2582:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 488, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "2587:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2582:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2578:20:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2564:34:1" }, { "assignments": [ 493 ], "declarations": [ { "constant": false, "id": 493, "mutability": "mutable", "name": "timestamp", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2643:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 492, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2643:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 498, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 496, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "2675:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 494, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2662:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "2662:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 497, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2662:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "2643:39:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 500, "name": "timestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 493, "src": "2747:9:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 501, "name": "vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "2759:10:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "2747:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 503, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "2772:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 504, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2772:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2747:40:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "564141206861732065787069726564", "id": 506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2789:17:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86", "typeString": "literal_string \"VAA has expired\"" }, "value": "VAA has expired" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86", "typeString": "literal_string \"VAA has expired\"" } ], "id": 499, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2739:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2739:68:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 508, "nodeType": "ExpressionStatement", "src": "2739:68:1" }, { "assignments": [ 510 ], "declarations": [ { "constant": false, "id": 510, "mutability": "mutable", "name": "hash", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2843:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 509, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2843:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 521, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 514, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "2878:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 518, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 515, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2886:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 516, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2886:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 517, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "2899:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2886:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 512, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "2868:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 513, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "2868:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 519, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2868:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 511, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2858:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 520, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2858:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "2843:64:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2925:19:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 523, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "2926:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 525, "indexExpression": { "argumentTypes": null, "id": 524, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 510, "src": "2939:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2926:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412077617320616c7265616479206578656375746564", "id": 527, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2946:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" }, "value": "VAA was already executed" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" } ], "id": 522, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2917:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2917:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 529, "nodeType": "ExpressionStatement", "src": "2917:56:1" }, { "assignments": [ 531 ], "declarations": [ { "constant": false, "id": 531, "mutability": "mutable", "name": "guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "2984:31:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 530, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "2984:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 535, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 532, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "3018:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 534, "indexExpression": { "argumentTypes": null, "id": 533, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "3032:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3018:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "2984:71:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 537, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3073:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 538, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 366, "src": "3073:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3105:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3073:33:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 545, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 541, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3110:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 542, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 366, "src": "3110:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 543, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3141:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3141:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3110:46:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3073:83:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "677561726469616e20736574206861732065787069726564", "id": 547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3158:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" }, "value": "guardian set has expired" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" } ], "id": 536, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3065:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 548, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3065:120:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 549, "nodeType": "ExpressionStatement", "src": "3065:120:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 561, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 551, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3203:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 552, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 364, "src": "3203:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3203:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "33", "id": 554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3230:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "src": "3203:28:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3234:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3203:32:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3238:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3203:36:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 560, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "3243:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3203:51:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6e6f2071756f72756d", "id": 562, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3256:11:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" }, "value": "no quorum" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" } ], "id": 550, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3195:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 563, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3195:73:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 564, "nodeType": "ExpressionStatement", "src": "3195:73:1" }, { "body": { "id": 638, "nodeType": "Block", "src": "3318:334:1", "statements": [ { "assignments": [ 576 ], "declarations": [ { "constant": false, "id": 576, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3332:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 575, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3332:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 585, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 583, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3358:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 580, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3362:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3366:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3362:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3358:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 577, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3346:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3346:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3346:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3332:37:1" }, { "assignments": [ 587 ], "declarations": [ { "constant": false, "id": 587, "mutability": "mutable", "name": "r", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3383:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 586, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3383:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 596, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 594, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "37", "id": 590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3409:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7" }, "value": "7" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 591, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3413:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3417:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3413:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3409:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 588, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3395:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3395:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3395:25:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3383:37:1" }, { "assignments": [ 598 ], "declarations": [ { "constant": false, "id": 598, "mutability": "mutable", "name": "s", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3434:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 597, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3434:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 607, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3339", "id": 601, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3460:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_39_by_1", "typeString": "int_const 39" }, "value": "39" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 602, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3465:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3469:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3465:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3460:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 599, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3446:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3446:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3446:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3434:38:1" }, { "assignments": [ 609 ], "declarations": [ { "constant": false, "id": 609, "mutability": "mutable", "name": "v", "nodeType": "VariableDeclaration", "overrides": null, "scope": 638, "src": "3486:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 608, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3486:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 618, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 612, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3508:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 613, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3513:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3517:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3513:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3508:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 610, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3496:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 611, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3496:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 617, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3496:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3486:34:1" }, { "expression": { "argumentTypes": null, "id": 621, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 619, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "3534:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "hexValue": "3237", "id": 620, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3539:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_27_by_1", "typeString": "int_const 27" }, "value": "27" }, "src": "3534:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 622, "nodeType": "ExpressionStatement", "src": "3534:7:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 625, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 510, "src": "3573:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 626, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 609, "src": "3579:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 627, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 587, "src": "3582:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 628, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 598, "src": "3585:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 624, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -6, "src": "3563:9:1", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3563:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 630, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 531, "src": "3591:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 631, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 364, "src": "3591:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 633, "indexExpression": { "argumentTypes": null, "id": 632, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 576, "src": "3609:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3591:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3563:52:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "564141207369676e617475726520696e76616c6964", "id": 635, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3617:23:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" }, "value": "VAA signature invalid" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" } ], "id": 623, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3555:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 636, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3555:86:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 637, "nodeType": "ExpressionStatement", "src": "3555:86:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 569, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3296:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 570, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 478, "src": "3300:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3296:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 639, "initializationExpression": { "assignments": [ 566 ], "declarations": [ { "constant": false, "id": 566, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 639, "src": "3284:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 565, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3284:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 568, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3293:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "3284:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3313:3:1", "subExpression": { "argumentTypes": null, "id": 572, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 566, "src": "3313:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 574, "nodeType": "ExpressionStatement", "src": "3313:3:1" }, "nodeType": "ForStatement", "src": "3279:373:1" }, { "assignments": [ 641 ], "declarations": [ { "constant": false, "id": 641, "mutability": "mutable", "name": "action", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "3662:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 640, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3662:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 648, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 644, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "3689:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3698:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3689:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 642, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3677:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3677:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3677:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3662:38:1" }, { "assignments": [ 650 ], "declarations": [ { "constant": false, "id": 650, "mutability": "mutable", "name": "payload", "nodeType": "VariableDeclaration", "overrides": null, "scope": 701, "src": "3710:20:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 649, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3710:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "id": 664, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 655, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 653, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "3743:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 654, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3752:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3743:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 656, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3755:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 657, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3755:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 658, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 485, "src": "3769:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 659, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3778:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3769:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 661, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3768:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3755:25:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 651, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 451, "src": "3733:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "3733:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 663, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3733:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "3710:71:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 665, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "3819:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783031", "id": 666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3829:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "0x01" }, "src": "3819:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 682, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 680, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "4027:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783130", "id": 681, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4037:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16" }, "value": "0x10" }, "src": "4027:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 692, "nodeType": "Block", "src": "4094:53:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "696e76616c69642056414120616374696f6e", "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4115:20:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" }, "value": "invalid VAA action" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" } ], "id": 688, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ -19, -19 ], "referencedDeclaration": -19, "src": "4108:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4108:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 691, "nodeType": "ExpressionStatement", "src": "4108:28:1" } ] }, "id": 693, "nodeType": "IfStatement", "src": "4023:124:1", "trueBody": { "id": 687, "nodeType": "Block", "src": "4043:45:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 684, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 650, "src": "4069:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 683, "name": "vaaTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 928, "src": "4057:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4057:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 686, "nodeType": "ExpressionStatement", "src": "4057:20:1" } ] } }, "id": 694, "nodeType": "IfStatement", "src": "3815:332:1", "trueBody": { "id": 679, "nodeType": "Block", "src": "3835:182:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 671, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 669, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 471, "src": "3857:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 670, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "3883:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "3857:44:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3903:59:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" }, "value": "only the current guardian set can change the guardian set" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" } ], "id": 668, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3849:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3849:114:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 674, "nodeType": "ExpressionStatement", "src": "3849:114:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 676, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 650, "src": "3998:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 675, "name": "vaaUpdateGuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 801, "src": "3977:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 677, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3977:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 678, "nodeType": "ExpressionStatement", "src": "3977:29:1" } ] } }, { "expression": { "argumentTypes": null, "id": 699, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 695, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4192:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 697, "indexExpression": { "argumentTypes": null, "id": 696, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 510, "src": "4205:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4192:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 698, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4213:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "4192:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 700, "nodeType": "ExpressionStatement", "src": "4192:25:1" } ] }, "documentation": null, "functionSelector": "3bc0aee6", "id": 702, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 454, "modifierName": { "argumentTypes": null, "id": 453, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "2291:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2291:12:1" } ], "name": "submitVAA", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 452, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 451, "mutability": "mutable", "name": "vaa", "nodeType": "VariableDeclaration", "overrides": null, "scope": 702, "src": "2259:18:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 450, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2259:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "2249:34:1" }, "returnParameters": { "id": 455, "nodeType": "ParameterList", "parameters": [], "src": "2304:0:1" }, "scope": 1170, "src": "2231:1993:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 800, "nodeType": "Block", "src": "4287:744:1", "statements": [ { "assignments": [ 708 ], "declarations": [ { "constant": false, "id": 708, "mutability": "mutable", "name": "new_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4297:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 707, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4297:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 713, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 711, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4343:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 709, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "4329:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "4329:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 712, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4329:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4297:48:1" }, { "assignments": [ 715 ], "declarations": [ { "constant": false, "id": 715, "mutability": "mutable", "name": "len", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4355:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 714, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4355:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 720, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 718, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4380:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 716, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "4367:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 717, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "4367:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 719, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4367:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "4355:27:1" }, { "assignments": [ 725 ], "declarations": [ { "constant": false, "id": 725, "mutability": "mutable", "name": "new_guardians", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4393:30:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 723, "name": "address", "nodeType": "ElementaryTypeName", "src": "4393:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 724, "length": null, "nodeType": "ArrayTypeName", "src": "4393:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 731, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 729, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "4440:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 728, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4426:13:1", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { "id": 726, "name": "address", "nodeType": "ElementaryTypeName", "src": "4430:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 727, "length": null, "nodeType": "ArrayTypeName", "src": "4430:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 730, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4426:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4393:51:1" }, { "body": { "id": 759, "nodeType": "Block", "src": "4485:103:1", "statements": [ { "assignments": [ 743 ], "declarations": [ { "constant": false, "id": 743, "mutability": "mutable", "name": "addr", "nodeType": "VariableDeclaration", "overrides": null, "scope": 759, "src": "4499:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 742, "name": "address", "nodeType": "ElementaryTypeName", "src": "4499:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 752, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "35", "id": 746, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4529:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 749, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 747, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4533:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3230", "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4537:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20" }, "value": "20" }, "src": "4533:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4529:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 744, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 704, "src": "4514:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 745, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "4514:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 751, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4514:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4499:41:1" }, { "expression": { "argumentTypes": null, "id": 757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 753, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 725, "src": "4554:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 755, "indexExpression": { "argumentTypes": null, "id": 754, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4568:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4554:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 756, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 743, "src": "4573:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4554:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 758, "nodeType": "ExpressionStatement", "src": "4554:23:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 738, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 736, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4471:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 737, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 715, "src": "4475:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4471:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 760, "initializationExpression": { "assignments": [ 733 ], "declarations": [ { "constant": false, "id": 733, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 760, "src": "4459:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 732, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4459:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 735, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4468:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "4459:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4480:3:1", "subExpression": { "argumentTypes": null, "id": 739, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 733, "src": "4480:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 741, "nodeType": "ExpressionStatement", "src": "4480:3:1" }, "nodeType": "ForStatement", "src": "4454:134:1" }, { "assignments": [ 762 ], "declarations": [ { "constant": false, "id": 762, "mutability": "mutable", "name": "old_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4598:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 761, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4598:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 764, "initialValue": { "argumentTypes": null, "id": 763, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "4630:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4598:50:1" }, { "expression": { "argumentTypes": null, "id": 767, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 765, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "4658:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 766, "name": "new_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 708, "src": "4679:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4658:43:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 768, "nodeType": "ExpressionStatement", "src": "4658:43:1" }, { "assignments": [ 770 ], "declarations": [ { "constant": false, "id": 770, "mutability": "mutable", "name": "new_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 800, "src": "4712:35:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 769, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 367, "src": "4712:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 775, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 772, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 725, "src": "4762:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "hexValue": "30", "id": 773, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4777:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 771, "name": "GuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 367, "src": "4750:11:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_GuardianSet_$367_storage_ptr_$", "typeString": "type(struct Wormhole.GuardianSet storage pointer)" } }, "id": 774, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4750:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4712:67:1" }, { "expression": { "argumentTypes": null, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 776, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "4789:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 778, "indexExpression": { "argumentTypes": null, "id": 777, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "4803:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4789:33:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 779, "name": "new_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 770, "src": "4825:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "4789:52:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 781, "nodeType": "ExpressionStatement", "src": "4789:52:1" }, { "expression": { "argumentTypes": null, "id": 793, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 782, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 393, "src": "4851:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$367_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 784, "indexExpression": { "argumentTypes": null, "id": 783, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 762, "src": "4865:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4851:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$367_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 785, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 366, "src": "4851:53:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 792, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 788, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "4914:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 789, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4914:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 787, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4907:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)" }, "typeName": { "id": 786, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4907:6:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4907:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 791, "name": "vaa_expiry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 397, "src": "4933:10:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4907:36:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4851:92:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 794, "nodeType": "ExpressionStatement", "src": "4851:92:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 796, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 762, "src": "4981:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { "argumentTypes": null, "id": 797, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "5005:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 795, "name": "LogGuardianSetChanged", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 373, "src": "4959:21:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", "typeString": "function (uint32,uint32)" } }, "id": 798, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4959:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 799, "nodeType": "EmitStatement", "src": "4954:70:1" } ] }, "documentation": null, "id": 801, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaUpdateGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 705, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 704, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 801, "src": "4260:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 703, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4260:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "4259:19:1" }, "returnParameters": { "id": 706, "nodeType": "ParameterList", "parameters": [], "src": "4287:0:1" }, "scope": 1170, "src": "4230:801:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 927, "nodeType": "Block", "src": "5085:1325:1", "statements": [ { "assignments": [ 807 ], "declarations": [ { "constant": false, "id": 807, "mutability": "mutable", "name": "source_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5138:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 806, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5138:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 812, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5172:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 808, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5159:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5159:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 811, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5159:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5138:36:1" }, { "assignments": [ 814 ], "declarations": [ { "constant": false, "id": 814, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5185:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 813, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5185:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 819, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 817, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5219:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 815, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5206:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5206:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5206:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5185:36:1" }, { "assignments": [ 821 ], "declarations": [ { "constant": false, "id": 821, "mutability": "mutable", "name": "target_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5340:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 820, "name": "address", "nodeType": "ElementaryTypeName", "src": "5340:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 828, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" }, "id": 826, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3338", "id": 824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5380:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_38_by_1", "typeString": "int_const 38" }, "value": "38" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 825, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5385:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "5380:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } ], "expression": { "argumentTypes": null, "id": 822, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5365:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "5365:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 827, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5365:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5340:48:1" }, { "assignments": [ 830 ], "declarations": [ { "constant": false, "id": 830, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5399:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 829, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5399:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 835, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3730", "id": 833, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5432:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" }, "value": "70" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" } ], "expression": { "argumentTypes": null, "id": 831, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5419:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5419:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 834, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5419:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5399:36:1" }, { "assignments": [ 837 ], "declarations": [ { "constant": false, "id": 837, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5499:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 836, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5499:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 842, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313033", "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5531:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" }, "value": "103" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" } ], "expression": { "argumentTypes": null, "id": 838, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5516:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 839, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint256", "nodeType": "MemberAccess", "referencedDeclaration": 271, "src": "5516:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint256)" } }, "id": 841, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5516:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5499:36:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 844, "name": "source_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 807, "src": "5554:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 845, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "5570:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5554:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", "id": 847, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5584:40:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" }, "value": "same chain transfers are not supported" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" } ], "id": 843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5546:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 848, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5546:79:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 849, "nodeType": "ExpressionStatement", "src": "5546:79:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 853, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 851, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 814, "src": "5643:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 852, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "5659:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5643:24:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", "id": 854, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5669:27:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" }, "value": "transfer must be incoming" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" } ], "id": 850, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "5635:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5635:62:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 856, "nodeType": "ExpressionStatement", "src": "5635:62:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 859, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 857, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "5712:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 858, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "5727:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5712:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 925, "nodeType": "Block", "src": "6259:145:1", "statements": [ { "assignments": [ 909 ], "declarations": [ { "constant": false, "id": 909, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 925, "src": "6273:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 908, "name": "address", "nodeType": "ElementaryTypeName", "src": "6273:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 916, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" }, "id": 914, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6312:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6317:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "6312:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } ], "expression": { "argumentTypes": null, "id": 910, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "6297:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 911, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "6297:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 915, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6297:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6273:47:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 921, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "6370:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 922, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 837, "src": "6386:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 918, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 909, "src": "6342:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 917, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "6335:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6335:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 920, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 2056, "src": "6335:34:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2022_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2022_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 923, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6335:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 924, "nodeType": "ExpressionStatement", "src": "6335:58:1" } ] }, "id": 926, "nodeType": "IfStatement", "src": "5708:696:1", "trueBody": { "id": 907, "nodeType": "Block", "src": "5737:516:1", "statements": [ { "assignments": [ 861 ], "declarations": [ { "constant": false, "id": 861, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 907, "src": "5751:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 860, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5751:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 866, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3731", "id": 864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5790:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" } ], "expression": { "argumentTypes": null, "id": 862, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 803, "src": "5775:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 863, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "5775:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5775:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5751:42:1" }, { "assignments": [ 868 ], "declarations": [ { "constant": false, "id": 868, "mutability": "mutable", "name": "asset_id", "nodeType": "VariableDeclaration", "overrides": null, "scope": 907, "src": "5807:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 867, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5807:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 876, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 872, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "5853:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 873, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, "src": "5866:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 870, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5836:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 871, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5836:16:1", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 874, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5836:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 869, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5826:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 875, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5826:55:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5807:74:1" }, { "assignments": [ 878 ], "declarations": [ { "constant": false, "id": 878, "mutability": "mutable", "name": "wrapped_asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 907, "src": "5973:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 877, "name": "address", "nodeType": "ElementaryTypeName", "src": "5973:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 882, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 879, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "5997:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 881, "indexExpression": { "argumentTypes": null, "id": 880, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "6011:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5997:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5973:47:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 883, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 878, "src": "6038:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6063:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 885, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6055:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 884, "name": "address", "nodeType": "ElementaryTypeName", "src": "6055:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 887, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6055:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6038:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 898, "nodeType": "IfStatement", "src": "6034:138:1", "trueBody": { "id": 897, "nodeType": "Block", "src": "6067:105:1", "statements": [ { "expression": { "argumentTypes": null, "id": 895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 889, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 878, "src": "6085:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 891, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 868, "src": "6120:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 892, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 830, "src": "6130:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 893, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, "src": "6143:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 890, "name": "deployWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 968, "src": "6101:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32) returns (address)" } }, "id": 894, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6101:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6085:72:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 896, "nodeType": "ExpressionStatement", "src": "6085:72:1" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 903, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "6219:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 904, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 837, "src": "6235:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 900, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 878, "src": "6199:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 899, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "6186:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6186:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1263, "src": "6186:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 905, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6186:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 906, "nodeType": "ExpressionStatement", "src": "6186:56:1" } ] } } ] }, "documentation": null, "id": 928, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaTransfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 804, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 803, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 928, "src": "5058:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 802, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5058:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "5057:19:1" }, "returnParameters": { "id": 805, "nodeType": "ParameterList", "parameters": [], "src": "5085:0:1" }, "scope": 1170, "src": "5037:1373:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 967, "nodeType": "Block", "src": "6531:791:1", "statements": [ { "assignments": [ 940 ], "declarations": [ { "constant": false, "id": 940, "mutability": "mutable", "name": "targetBytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 967, "src": "6709:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" }, "typeName": { "id": 939, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6709:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "value": null, "visibility": "internal" } ], "id": 945, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 943, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 355, "src": "6739:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 942, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6731:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": { "id": 941, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6731:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6731:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "nodeType": "VariableDeclarationStatement", "src": "6709:49:1" }, { "AST": { "nodeType": "YulBlock", "src": "6777:341:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "6791:24:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "6810:4:1", "type": "", "value": "0x40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "6804:5:1" }, "nodeType": "YulFunctionCall", "src": "6804:11:1" }, "variables": [ { "name": "clone", "nodeType": "YulTypedName", "src": "6795:5:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "6835:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6842:66:1", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6828:6:1" }, "nodeType": "YulFunctionCall", "src": "6828:81:1" }, "nodeType": "YulExpressionStatement", "src": "6828:81:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "6933:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6940:4:1", "type": "", "value": "0x14" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6929:3:1" }, "nodeType": "YulFunctionCall", "src": "6929:16:1" }, { "name": "targetBytes", "nodeType": "YulIdentifier", "src": "6947:11:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6922:6:1" }, "nodeType": "YulFunctionCall", "src": "6922:37:1" }, "nodeType": "YulExpressionStatement", "src": "6922:37:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "6983:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6990:4:1", "type": "", "value": "0x28" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "6979:3:1" }, "nodeType": "YulFunctionCall", "src": "6979:16:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "6997:66:1", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "6972:6:1" }, "nodeType": "YulFunctionCall", "src": "6972:92:1" }, "nodeType": "YulExpressionStatement", "src": "6972:92:1" }, { "nodeType": "YulAssignment", "src": "7077:31:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "7093:1:1", "type": "", "value": "0" }, { "name": "clone", "nodeType": "YulIdentifier", "src": "7096:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7103:4:1", "type": "", "value": "0x37" } ], "functionName": { "name": "create", "nodeType": "YulIdentifier", "src": "7086:6:1" }, "nodeType": "YulFunctionCall", "src": "7086:22:1" }, "variableNames": [ { "name": "asset", "nodeType": "YulIdentifier", "src": "7077:5:1" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 937, "isOffset": false, "isSlot": false, "src": "7077:5:1", "valueSize": 1 }, { "declaration": 940, "isOffset": false, "isSlot": false, "src": "6947:11:1", "valueSize": 1 } ], "id": 946, "nodeType": "InlineAssembly", "src": "6768:350:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 951, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 932, "src": "7187:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 952, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 934, "src": "7200:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 948, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 937, "src": "7169:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 947, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7156:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 949, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7156:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 950, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 1242, "src": "7156:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$returns$__$", "typeString": "function (uint8,bytes32) external" } }, "id": 953, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7156:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 954, "nodeType": "ExpressionStatement", "src": "7156:58:1" }, { "expression": { "argumentTypes": null, "id": 959, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 955, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 405, "src": "7250:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 957, "indexExpression": { "argumentTypes": null, "id": 956, "name": "seed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 930, "src": "7264:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7250:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 958, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 937, "src": "7272:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7250:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 960, "nodeType": "ExpressionStatement", "src": "7250:27:1" }, { "expression": { "argumentTypes": null, "id": 965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 961, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 409, "src": "7287:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 963, "indexExpression": { "argumentTypes": null, "id": 962, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 937, "src": "7302:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7287:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7311:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "7287:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 966, "nodeType": "ExpressionStatement", "src": "7287:28:1" } ] }, "documentation": null, "id": 968, "implemented": true, "kind": "function", "modifiers": [], "name": "deployWrappedAsset", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 935, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 930, "mutability": "mutable", "name": "seed", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6444:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 929, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6444:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 932, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6458:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 931, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6458:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 934, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6477:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 933, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6477:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "6443:56:1" }, "returnParameters": { "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 937, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 968, "src": "6517:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 936, "name": "address", "nodeType": "ElementaryTypeName", "src": "6517:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6516:15:1" }, "scope": 1170, "src": "6416:906:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 1099, "nodeType": "Block", "src": "7526:1034:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 986, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 984, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7544:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 985, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7554:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "7544:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 987, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7557:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 983, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7536:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7536:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 989, "nodeType": "ExpressionStatement", "src": "7536:44:1" }, { "assignments": [ 991 ], "declarations": [ { "constant": false, "id": 991, "mutability": "mutable", "name": "asset_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1099, "src": "7591:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 990, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7591:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 993, "initialValue": { "argumentTypes": null, "id": 992, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "7611:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "7591:28:1" }, { "assignments": [ 995 ], "declarations": [ { "constant": false, "id": 995, "mutability": "mutable", "name": "asset_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1099, "src": "7629:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 994, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7629:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 996, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "7629:21:1" }, { "condition": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 997, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 409, "src": "7664:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 999, "indexExpression": { "argumentTypes": null, "id": 998, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7679:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7664:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1080, "nodeType": "Block", "src": "7886:539:1", "statements": [ { "assignments": [ 1027 ], "declarations": [ { "constant": false, "id": 1027, "mutability": "mutable", "name": "balanceBefore", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1080, "src": "7900:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7900:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1037, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1034, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "7956:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } ], "id": 1033, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7948:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1032, "name": "address", "nodeType": "ElementaryTypeName", "src": "7948:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7948:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1029, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7931:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1028, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "7924:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 1030, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7924:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1961, "src": "7924:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1036, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7924:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7900:62:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1042, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8007:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8007:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1046, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8027:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } ], "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8019:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1044, "name": "address", "nodeType": "ElementaryTypeName", "src": "8019:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1047, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8019:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1048, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8034:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1039, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7983:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1038, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "7976:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 1040, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2081, "src": "7976:30:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2022_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2022_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1050, "nodeType": "ExpressionStatement", "src": "7976:65:1" }, { "assignments": [ 1052 ], "declarations": [ { "constant": false, "id": 1052, "mutability": "mutable", "name": "balanceAfter", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1080, "src": "8055:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1051, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8055:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1062, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1059, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8110:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1170", "typeString": "contract Wormhole" } ], "id": 1058, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8102:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", "src": "8102:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1060, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8102:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1054, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "8085:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1053, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2022, "src": "8078:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2022_$", "typeString": "type(contract IERC20)" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8078:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1056, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 1961, "src": "8078:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8078:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8055:61:1" }, { "expression": { "argumentTypes": null, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1063, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8321:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1066, "name": "balanceBefore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1027, "src": "8347:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1064, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1052, "src": "8330:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1065, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1794, "src": "8330:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8330:31:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8321:40:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1069, "nodeType": "ExpressionStatement", "src": "8321:40:1" }, { "expression": { "argumentTypes": null, "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1070, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "8375:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1075, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "8407:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1074, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8399:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1073, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8399:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1076, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8399:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1072, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8391:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1071, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8391:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8391:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "8375:39:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1079, "nodeType": "ExpressionStatement", "src": "8375:39:1" } ] }, "id": 1081, "nodeType": "IfStatement", "src": "7660:765:1", "trueBody": { "id": 1025, "nodeType": "Block", "src": "7687:193:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1004, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7726:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7726:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1006, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7738:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1001, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7714:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1000, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7701:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1002, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7701:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 1003, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "burn", "nodeType": "MemberAccess", "referencedDeclaration": 1284, "src": "7701:24:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7701:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1008, "nodeType": "ExpressionStatement", "src": "7701:44:1" }, { "expression": { "argumentTypes": null, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1009, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 991, "src": "7759:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1011, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7786:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1010, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7773:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1012, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7773:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 1013, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetChain", "nodeType": "MemberAccess", "referencedDeclaration": 1193, "src": "7773:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7773:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "7759:46:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1016, "nodeType": "ExpressionStatement", "src": "7759:46:1" }, { "expression": { "argumentTypes": null, "id": 1023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1017, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "7819:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1019, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "7848:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1018, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1725, "src": "7835:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1725_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1020, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7835:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1725", "typeString": "contract WrappedAsset" } }, "id": 1021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetAddress", "nodeType": "MemberAccess", "referencedDeclaration": 1195, "src": "7835:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, "id": 1022, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7835:34:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "7819:50:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1024, "nodeType": "ExpressionStatement", "src": "7819:50:1" } ] } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1083, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "8456:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1084, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 991, "src": "8470:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1085, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "8483:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1090, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8514:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8514:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1089, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8506:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1088, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8506:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8506:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1087, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8498:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1086, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8498:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1093, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8498:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1094, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8528:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1095, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8539:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1096, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 978, "src": "8547:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1082, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "8440:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8440:113:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1098, "nodeType": "EmitStatement", "src": "8435:118:1" } ] }, "documentation": null, "functionSelector": "13cca1a9", "id": 1100, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 981, "modifierName": { "argumentTypes": null, "id": 980, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "7513:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "7513:12:1" } ], "name": "lockAssets", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 979, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 970, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7385:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 969, "name": "address", "nodeType": "ElementaryTypeName", "src": "7385:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 972, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7408:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7408:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 974, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7432:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 973, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7432:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 976, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7459:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 975, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7459:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 978, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1100, "src": "7487:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 977, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "7487:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "7375:130:1" }, "returnParameters": { "id": 982, "nodeType": "ParameterList", "parameters": [], "src": "7526:0:1" }, "scope": 1170, "src": "7356:1204:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1152, "nodeType": "Block", "src": "8694:330:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1112, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8712:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8712:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8725:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "8712:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8728:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 1111, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8704:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8704:47:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1118, "nodeType": "ExpressionStatement", "src": "8704:47:1" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1120, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "8800:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1119, "name": "WETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1181, "src": "8795:4:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WETH_$1181_$", "typeString": "type(contract WETH)" } }, "id": 1121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8795:17:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WETH_$1181", "typeString": "contract WETH" } }, "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 1175, "src": "8795:25:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 1125, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1123, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8829:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1124, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8829:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "8795:44:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 1126, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8795:46:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1127, "nodeType": "ExpressionStatement", "src": "8795:46:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1129, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1104, "src": "8904:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1130, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 358, "src": "8918:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1135, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "8944:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8936:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8936:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1136, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8936:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1132, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8928:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1131, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8928:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1137, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8928:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1142, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8975:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8975:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8967:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1140, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8967:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8967:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1139, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1138, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8959:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1146, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1102, "src": "8989:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1147, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9000:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9000:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1149, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1106, "src": "9011:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1128, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 389, "src": "8888:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8888:129:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1151, "nodeType": "EmitStatement", "src": "8883:134:1" } ] }, "documentation": null, "functionSelector": "58d62e46", "id": 1153, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1109, "modifierName": { "argumentTypes": null, "id": 1108, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2478, "src": "8681:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "8681:12:1" } ], "name": "lockETH", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1107, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1102, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1153, "src": "8592:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1101, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8592:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1104, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1153, "src": "8619:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1103, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "8619:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1106, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1153, "src": "8647:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 1105, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "8647:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "8582:83:1" }, "returnParameters": { "id": 1110, "nodeType": "ParameterList", "parameters": [], "src": "8694:0:1" }, "scope": 1170, "src": "8566:458:1", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { "id": 1160, "nodeType": "Block", "src": "9055:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1157, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9063:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1156, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ -19, -19 ], "referencedDeclaration": -19, "src": "9056:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9056:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1159, "nodeType": "ExpressionStatement", "src": "9056:54:1" } ] }, "documentation": null, "id": 1161, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1154, "nodeType": "ParameterList", "parameters": [], "src": "9035:2:1" }, "returnParameters": { "id": 1155, "nodeType": "ParameterList", "parameters": [], "src": "9055:0:1" }, "scope": 1170, "src": "9027:85:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 1168, "nodeType": "Block", "src": "9140:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9148:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1164, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ -19, -19 ], "referencedDeclaration": -19, "src": "9141:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9141:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1167, "nodeType": "ExpressionStatement", "src": "9141:54:1" } ] }, "documentation": null, "id": 1169, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1162, "nodeType": "ParameterList", "parameters": [], "src": "9120:2:1" }, "returnParameters": { "id": 1163, "nodeType": "ParameterList", "parameters": [], "src": "9140:0:1" }, "scope": 1170, "src": "9113:84:1", "stateMutability": "payable", "virtual": false, "visibility": "external" } ], "scope": 1182, "src": "446:8753:1" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1171, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2022, "src": "9220:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2022", "typeString": "contract IERC20" } }, "id": 1172, "nodeType": "InheritanceSpecifier", "src": "9220:6:1" } ], "contractDependencies": [ 2022 ], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 1181, "linearizedBaseContracts": [ 1181, 2022 ], "name": "WETH", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "d0e30db0", "id": 1175, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1173, "nodeType": "ParameterList", "parameters": [], "src": "9245:2:1" }, "returnParameters": { "id": 1174, "nodeType": "ParameterList", "parameters": [], "src": "9264:0:1" }, "scope": 1181, "src": "9229:36:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": null, "documentation": null, "functionSelector": "2e1a7d4d", "id": 1180, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1178, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1177, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1180, "src": "9285:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1176, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9285:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "9284:16:1" }, "returnParameters": { "id": 1179, "nodeType": "ParameterList", "parameters": [], "src": "9309:0:1" }, "scope": 1181, "src": "9267:43:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 1182, "src": "9202:110:1" } ], "src": "103:9210:1" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-08-20T18:32:51.829Z", "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }